DockerFile
DockerFile 常用指令
FROM
MAINTAINER
LABEL
RUN
CMD
ENTRYPOINT
ENTRYPOINT
与 CMD
区别?
如: FROM busybox ENTRYPOINT ["top", "-b"] CMD ["-c"]
把可能需要变动的参数写到 CMD 里面。然后你可以在docker run里指定参数,这样 CMD 里的参数(这里是-c) 就会被覆盖掉而 ENTRYPOINT 里的不被覆盖。
注意: ENTRYPOINT有两种写法,第二种(shell form)会屏蔽掉 docker run 时后面加的命令和 CMD 里的参数
EXPOSE
ADD
COPY
ADD
命令和COPY
命令的区别?
COPY
命令可以用于 multistage
场景下,而ADD命令不可以
ADD
命令可以传入压缩包文件,并自动解压至指定位置,也可以传入URL
docker的 multistage
场景:同一个DockerFile
文件中可以存在多个FROM指令,每个FROM
指令代表stage的开始.
注意:旧版本的 docker 是不支持 multi-stage
的,只有 17.05
以及之后的版本才开始支持
VOLUME
USER
WORKDIR
ONBUILD
ARG
ENV
HEALTHCHECK
DockerFile 构建选项及技巧
docker build用于使用 Dockerfile 创建镜像,下面是参数列表:
加速镜像构建
在使用 COPY
和 ADD
命令时,我们可以通过一些技巧来加速镜像的 build 过程。比如把那些最不容易发生变化的文件的拷贝操作放在较低的镜像层中,这样在重新 build 镜像时就会使用前面 build 产生的缓存,例如:
DockerFile 最佳实践
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
https://docs.docker.com/develop/dev-best-practices/