共计 932 个字符,预计需要花费 3 分钟才能阅读完成。
1、RUN
作用于在 image 里执行命令,如下载文件,安装软件等需要执行多个命令时,可以使用 RUN + &&\,每一行的 RUN 命令都会产生一层 image layer, 导致镜像的臃肿。
如:RUN apt-get update && apt-get install -y wget
2、WORKDIR
进行目录切换,在 Dockerfile 里面可以产生 进入到某个目录里面执行操作命令的效果;类似于 CD,但 WORKDIR 指定的目录如果不存在的话会自动创建
3、ADD 和 COPY 区别
都是复制一个文件到镜像中但压缩文件建议使用 ADD,ADD 会自动解压缩文件
4、EVN 和 ARG 区别
两者都可以用来设置一个“变量”;但 ARG 作用域是在 build image 的时候,不过可以通过 --build-arg动态修改 value;
如:docker image build -f Dockerfile-arg -t ipinfo-arg-2.0.0 --build-arg VERSION=2.0.0 .
EVN 的作用域是可以在 image 中保持的,并可以作用于在容器中的环境变量里

5、CMD 和 ENTRYPOINT 区别
CMD 表示的是容器启动时默认执行的命令;如果 docker container run 启动容器时指定了其它命令,则 CMD 命令会被忽略;如果定义了多个CMD,只有最后一个会被执行。有时候默认会进入到 shell,是因为有些基础镜像里面定义了 CMD,如:ubuntu 基础镜像有定义 CMD
ENTRYPOINTCMD 设置的命令,可以在 docker container run 时传入其它命令,覆盖掉 CMD 的命令,但是 ENTRYPOINT 所设置的命令是一定会被执行的。ENTRYPOINT 和 CMD 可以联合使用,ENTRYPOINT 设置执行的命令,CMD 传递参数
EXPOSE暴露一个端口
6、dockerignore
dockerignore 可以减少 Docker build context
什么是 Docker build context?
Docker 是 client-server 架构,理论上 Client 和 Server 可以不在一台机器上。
在构建 docker 镜像的时候,需要把所需要的文件由 CLI(client)发给 Server,这些文件实际上就是 build context