其他分享
首页 > 其他分享> > Docker从入门到精通<6>

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