目录
一、使用dockerfile构建镜像
除了使用docker commit把自定义容器提交成镜像外,还可以使用Dockerfile来构建自定义镜像。
什么是Dockerfile?
答: Dockerfile把构建镜像的步骤都写出来,然后按顺序执行实现自动构建镜像。就类似于脚本文件,ansible的playbook,saltstack的sls文件等。
1.1、dockerfile指令
1.FROM
FROM指令用于指定其后构建新镜像所使用的基础镜像。FROM指令必是Dockerfile文件中的首条命令。
FROM指令指定的基础image可以是官方远程仓库中的,也可以位于本地仓库,优先本地仓库。
2.RUN
RUN指令用于在构建镜像中执行命令,有以下两种格式:
注意:按优化的角度来讲:当有多条要执行的命令,不要使用多条RUN,尽量使用&&符号与\符号连接成一行。因为多条RUN命令会让镜像建立多层(总之就是会变得臃肿了).
3.CMD
CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。
每个Dockerfile只能有一条CMD命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉CMD指定的命令。
4.ENTRYPOINT
ENTRYPOINT与CMD非常类似
相同点:
一个Dockerfile只写一条,如果写了多条,那么只有最后—条生效都是容器启动时才运行
不同点:
如果用户启动容器时候指定了运行的命令,ENTRYPOINT不会被运行的命令覆盖,而CMD则会被覆盖
5.EXPOSR
用于指定容器在运行时监听的端口
上述运行的端口还需要使用docker run运行容器时通过-p参数映射到宿主机的端口.
6.ENV
用于指定环境变量