Docker学习笔记(五)-- DockerFile

195 阅读3分钟

DockerFile是可以用来创建docker镜像的配置文件。本章使用DockerFile来构建一个自己的centos镜像。

DockerFile一般由四部分组成:基础镜像信息,维护者信息,镜像操作指令和容器执行时操作。

FROM # 基础镜像 比如centos
MAINTAINER # 镜像是谁写的 姓名+邮箱
RUN # 镜像构建时需要运行的命令
ADD # 添加,比如添加一个tomcat压缩包
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 指定暴露端口,跟-p一个道理
RUN # 最终要运行的
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,而且可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承Dockerfile 这个时候运行ONBUILD指定,触发指令
COPY # 将文件拷贝到镜像中
ENV # 构建的时候设置环境变量
  1. 每个指令都必须是大写字母
  2. 按照从上到下顺序执行
  3. 每一个指令都会创建体检一个新的镜像层
#在创建镜像后,使用命令来构建镜像
docker build
-f             #指定要使用的Dockerfile路径;
--tag, -t      # 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--build-arg=[] #设置镜像创建时的变量;

使用dockerFile来创建一个镜像

#创建一个文件
vim myDockerFile
​
#以下为文件内容。这里基于centos创建一个镜像,这个镜像会在centos中预先安装vim和net-tools
​
FROM centos
​
ENV MYPATH /usr/local
WORKDIR $MYPATH
​
RUN yum -y install vim
RUN yum -y install net-tools
​
EXPOSE 80
CMD /bin/bash
# 构建镜像,构建完的镜像叫bulid-centos,最后有一个. 表示生成在当前目录
[root@localhost ~]# docker build -f myDockerFile -t build-centos:1.0 . 
Sending build context to Docker daemon  450.5MB
Step 1/9 : FROM centos
 ---> 300e315adb2f
Step 2/9 : ENV MYPATH /usr/local
 ---> Running in be5849357d6f
# ...省略
Step 9/9 : CMD /bin/bash
 ---> Running in 3146905d85c7
Removing intermediate container 3146905d85c7
 ---> adce594960cc
Successfully built adce594960cc
Successfully tagged bulid-centos:1.0

查看镜像的构建历史

docker history [OPTIONS] IMAGE
--human , -H #以可读的格式打印镜像大小和日期,默认为true;
--no-trunc #显示完整的提交记录;
--quiet , -q #仅列出提交记录ID。
[root@localhost ~]# docker history build-centos:1.0
IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
adce594960cc   5 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B        
e96b9b0e5c6e   5 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B        
52aa04b097c2   5 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B        
b84aefab743c   5 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
2a132da3400f   5 minutes ago   /bin/sh -c yum -y install net-tools             29.5MB    
e83cd99e8b92   5 minutes ago   /bin/sh -c yum -y install vim                   68.1MB    
7e7f79fd7fb9   5 minutes ago   /bin/sh -c #(nop) WORKDIR /usr/local            0B        
74327c1a603d   5 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B        
300e315adb2f   8 months ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      8 months ago    /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
<missing>      8 months ago    /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB  

也能够通过官网来直接查看DockerFile

image-20210905192920532.png 点击版本,跳转到Git

image-20210905193042903.png

\