1-4dockerfile基本使用

时间:2019-09-26
本文章向大家介绍1-4dockerfile基本使用,主要包括1-4dockerfile基本使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

原文地址:https://www.cnblogs.com/zhaojingyu/p/11594650.html