1.创建一个文件夹

 mkdir mynginx
cd mynginx
touch Dockerfile
[root@VM_0_10_centos mynginx]# cat Dockerfile
FROM nginx:1.17 #第一次镜像 RUN echo echo '<h1>Hello, zjy!</h1>' > /usr/share/nginx/html/index.html

1-1、如果说没有第一层镜像,是空白镜像scratch

FROM scratch
...

1-2、dockerfile  最大镜像层数有限制

Union FS 是有最⼤层数限制的,⽐如 AUFS,曾经是最⼤不得超过 42 层,现在是不得超过 127层。
Dockerfile 正确的写法应该是这样:

FROM debian:jessie
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
Dockerfile 定制镜像
27
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps #而不是这样怎写的
FROM debian:jessie
RUN apt-get update
RUN apt-get install -y gcc libc6-dev make
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz"
RUN mkdir -p /usr/src/redis
RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
RUN make -C /usr/src/redis
RUN make -C /usr/src/redis install

2.制作镜像 

docker build -t nginx:v3 .

3、dockerfile 构建会有上下文

如果注意,会看到 docker build 命令最后有 一个  .   ,  . 表示当前目录, Dockerfile 就在当前目录。

当执行COCP指令时会把当前目录打包放在镜像中,如果把dockerfile放在根目录下,打包可能一个镜像会几十G,那样就尴尬了

COPY ./package.json /app/

#  ./package.jso
#所有打包的或者拷贝的全都放到dockerfile 所在目录中,这样才正确
应该会将 Dockerfile 置于一个空目录下,或者项目根目录下。
实际上 Dockerfile 的件名并不要求必须为 Dockerfile,而且并不要求必须位于上下目录 -f ../Dockerfile.php 参数指定某个文件作为 Dockerfile

4、镜像的迁移

Docker 还提供了 docker load 和 docker save 命令,以将镜像保存为一个 tar 文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使 Docker Registry,无论是直接使用Docker Hub 还是使内内网私有 Registry 都可以。 
[root@VM_0_10_centos mynginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v3 1af39fd25fb3 29 minutes ago 126MB
nginx v2 7d3e771ab88b 5 hours ago 126MB
nginx 1.17 f949e7d76d63 38 hours ago 126MB
ubuntu 16.04 657d80a6401d 7 days ago 121MB
[root@VM_0_10_centos mynginx]# docker save nginx:v3|gzip > nginx_v3.tar.gz
[root@VM_0_10_centos mynginx]# ls
Dockerfile nginx_v3.tar.gz
[root@VM_0_10_centos mynginx]# du -sh nginx_v3.tar.gz
47M nginx_v3.tar.gz
[root@VM_0_10_centos mynginx]# docker rmi 1af39fd25fb3
Untagged: nginx:v3
Deleted: sha256:1af39fd25fb3616ea2efd24d00e0f77309c6a8c6af4ab527678a6adea1250991
Deleted: sha256:d2549ea8e90863f679a50fd3378bd9c06fd766107565f53435134d40470c7799 [root@VM_0_10_centos mynginx]# docker load -i nginx_v3.tar.gz
44d9a80fe7fc: Loading layer [==================================================>] 4.096kB/4.096kB
Loaded image: nginx:v3
[root@VM_0_10_centos mynginx]# docker im
image images import
[root@VM_0_10_centos mynginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v3 1af39fd25fb3 30 minutes ago 126MB
nginx v2 7d3e771ab88b 5 hours ago 126MB
nginx 1.17 f949e7d76d63 38 hours ago 126MB
ubuntu 16.04 657d80a6401d 7 days ago 121MB

1-4dockerfile基本使用的更多相关文章

  1. Docker入门4------Dockerfile

    转自:https://www.cnblogs.com/jsonhc/p/7766841.html https://www.cnblogs.com/jsonhc/p/7767669.html Docke ...

  2. Docker技术入门与实战 第二版-学习笔记-4-Dockerfile外其他生成镜像的方法

    其它生成镜像的方法 即除了标准地使用Dockerfile来生成镜像外,还有一些其他的方法 1)从 rootfs 压缩包导入 格式:docker import [选项] <文件>|<U ...

  3. Docker进阶:容器卷、DockerFile、Docker网络原理

    1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...

随机推荐

  1. Spring Boot 2实现分布式锁——这才是实现分布式锁的正确姿势!

    参考资料 网址 Spring Boot 2实现分布式锁--这才是实现分布式锁的正确姿势! http://www.spring4all.com/article/6892

  2. Excel——读取——导出目录

    /** * 导出Excel文件到具体的目录 * <一句话功能简述> * <功能详细描述> * @param fileName 导出的文件名 * @param sheetName ...

  3. C 语言项目中.h文件和.c文件的关系

    http://blog.csdn.net/xingkong_678/article/details/38639847 关于两者以前的关系,要从N年以前说起了~ long long ago,once a ...

  4. DOM是浏览器提供给开发者的语柄、套接字、文件接口

    DOM是浏览器提供给开发者的语柄.套接字.文件接口

  5. Cookies and Custom Protocols

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/URLLoadingSystem/Cookiesa ...

  6. scala 学习笔记--模式匹配

    1.switch java代码 switch (cause) { case ‘2‘ : dropTime=time; case ‘8’:case ‘9’ : case ‘10’:case ‘11’ : ...

  7. podium micro-frontends 简单试用

    以下是一个简单的podium 试用,包含了layout 以及podlets,使用docker 运行 podium 主要包含了两大部分 podlets 片段服务 layouts 片段组合服务 环境准备 ...

  8. [PHP] Laravel 5.5 使用备注

    laravel-5_5文档地址:https://laravelacademy.org/category/laravel-5_5 模板变量文档: https://laravelacademy.org/p ...

  9. 微信小程序 自定义导航组件 nav头部 全面屏设计

    nav-dynamic 微信小程序自定义nav头部组件:适配全面屏设计: 实现功能 初始进入页面时,展示初始状态下的nav样式: 页面滚动时,监听页面滚动事件,展示滚动状态下的nav样式: 根据配置字 ...

  10. Macbook Pro 键盘触摸板失灵,只有电源键有反应 修复手札

    上次说到换完电池后键盘和触摸板就没反应了,只好硬着头皮把所有的元件一个个拆下来试. 经过3天的测试(试了网上所有能找到的办法,最多的就是重置smc和nvmp),最终确定故障应该在触摸板排线上. 没有废 ...