Docker从入门到精通<6>
作者:互联网
Dockerfile自动构建docker镜像
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>] # 构建新镜像所依赖的基础镜像
RUN <command> | ["executable", "param1", "param2"]
执行命令,这里有两种方式,第一种默认直接调用系统shell,第二种会转换为json,所以一定要用双引号。如果命令比较长可以使用反斜杠进行换行处理。
与shell形式不同,exec形式不调用命令 shell。这意味着不会发生正常的 shell 处理。例如,
RUN [ "echo", "$HOME" ]
不会对 进行变量替换$HOME
。如果你想要 shell 处理,那么要么使用shell形式,要么直接执行 shell,例如:RUN [ "sh", "-c", "echo $HOME" ]
. 当使用 exec 形式并直接执行 shell 时,就像 shell 形式一样,是 shell 进行环境变量扩展,而不是 docker。如果命令中需要转义,需要用反斜杠进行转义。
ADD
ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
把文件、目录、或者远程的文件的url,从src 拷贝到 镜像 的文件系统中的dest位置。
注意:
1. --chown 仅适用于linux系统。
2. src源文件等可以进行模糊匹配,指定go语言中的filepath.Match,支持 .*?
3. dest 的位置,是相对于WORKDIR的位置,比如WORKDIR 为/data/, dest为app/,那么实际上的dest路径为/data/app/
COPY
CMD 指定在容器中运行的命令。跟run不同,run是指在构建构建镜像时执行的命令
LABEL
<key>=<value> <key>=<value> <key>=<value> ... 构建完镜像后,我们可以通过
docker image inspect --format='' myimage 查看标签信息
MAINTAINER 作者信息,已经弃用,可以用label取代
EXPOSE
<port> [<port>/<protocol>...] 指定docker容器在运行时侦听的端口,还可以指定协议是TCP,还是UDP,默认为TCP,例如:EXPOSE 80/TCP, 无论这个参数如何设置docker -p 都将覆盖这个参数,-P表示可以设置随机端口。
ENV 设置环境变量,后续的构建中可以进行引用和替换。
FROM busybox ENV FOO=/bar WORKDIR ${FOO} # WORKDIR /bar ADD . $FOO # ADD . /bar COPY \$FOO /quux # COPY $FOO /quux
STOPSIGNAL
USER
VOLUME
WORKDIR
ONBUILD
(when combined with one of the supported instructions above)
标签:精通,shell,入门,--,ADD,WORKDIR,Docker,FOO,docker 来源: https://www.cnblogs.com/yang-ning/p/15011125.html