Dockerfile 指令
FROM 指定基础镜像所谓定制镜像, 那一定是以一个镜像为基础, 在其上进行定制。RUN 执行命令RUN 指令是用来执行命令行命令的。 由于命令行的强大能力, RUN 指令在定制镜像时是最常用的指令之一。shell 格式: RUN <命令> , 就像直接在命令行中输入的命令一样。 刚才写的Dockerfile 中的 RUN 指令就是这种格式。exec 格式: RUN [“可...
FROM 指定基础镜像
所谓定制镜像, 那一定是以一个镜像为基础, 在其上进行定制。
RUN 执行命令
RUN 指令是用来执行命令行命令的。 由于命令行的强大能力, RUN 指令在定制镜像时是最常用的指令之一。
- shell 格式: RUN <命令> , 就像直接在命令行中输入的命令一样。 刚才写的Dockerfile 中的 RUN 指令就是这种格式。
- exec 格式: RUN [“可执行文件”, “参数1”, “参数2”] , 这更像是函数调用中
的格式。
COPY 复制文件
COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。
COPY <源路径>… <目标路径>
ADD 更高级的复制文件
<源路径> 可以是一个 URL , 这种情况下, Docker 引擎会试图去下载这个链接的文件放到 <目标路径> 去。 下载后的文件权限自动设置为 600 , 如果这并不是想要的权限, 那么还需要增加额外的一层 RUN 进行权限调整, 另外, 如果下载的是个压缩包, 需要解压缩, 也一样还需要额外的一层 RUN 指令进行解压缩。
所以不如直接使用 RUN 指令, 然后使用 wget 或者 curl 工具下载, 处理权限、 解压缩、 然后清理无用文件更合理。 因此, 这个功能其实并不实用, 而且不推荐使用。
CMD 容器启动命令
CMD 指令就是用于指定默认的容器主进程的启动命令的。
ENTRYPOINT 入口点
指定容器启动程序及参
数。 ENTRYPOINT 在运行时也可以替代, 不过比 CMD 要略显繁琐, 需要通过
docker run 的参数 --entrypoint 来指定。
ENV 设置环境变量
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>
设置环境变量而已, 无论是后面的其它指令, 如 RUN , 还是运行时的应用, 都可以直接使用这里定义的环境变量。
ARG 构建参数
ARG <参数名>[=<默认值>]
构建参数和 ENV 的效果一样, 都是设置环境变量。 所不同的是, ARG 所设置的
构建环境的环境变量, 在将来容器运行时是不会存在这些环境变量的。 但是不要因
此就使用 ARG 保存密码之类的信息, 因为 docker history 还是可以看到所有
值的。
VOLUME 定义匿名卷
VOLUME ["<路径1>", “<路径2>”…]
VOLUME <路径>
容器运行时应该尽量保持容器存储层不发生写操作, 对于数据库类需要保存动态数据的应用, 其数据库文件应该保存于卷(volume)中
EXPOSE 声明端口
EXPOSE <端口1> [<端口2>…]
EXPOSE 指令是声明运行时容器提供服务端口, 这只是一个声明, 在运行时并不
会因为这个声明应用就会开启这个端口的服务。 在 Dockerfile 中写入这样的声明有
两个好处, 一个是帮助镜像使用者理解这个镜像服务的守护端口, 以方便配置映
射; 另一个用处则是在运行时使用随机端口映射时, 也就是 docker run -P
时, 会自动随机映射 EXPOSE 的端口。
WORKDIR 指定工作目录
WORKDIR <工作目录路径>
使用 WORKDIR 指令可以来指定工作目录( 或者称为当前目录) , 以后各层的当前
目录就被改为指定的目录, 如该目录不存在, WORKDIR 会帮你建立目录。
USER 指定当前用户
USER <用户名>[:<用户组>]
USER 指令和 WORKDIR 相似, 都是改变环境状态并影响以后的层。 WORKDIR
是改变工作目录, USER 则是改变之后层的执行 RUN , CMD 以及
ENTRYPOINT 这类命令的身份。
当然, 和 WORKDIR 一样, USER 只是帮助你切换到指定用户而已, 这个用户必
须是事先建立好的, 否则无法切换。
HEALTHCHECK 健康检查
HEALTHCHECK [选项] CMD <命令> : 设置检查容器健康状况的命令
HEALTHCHECK NONE : 如果基础镜像有健康检查指令, 使用这行可以屏蔽掉
其健康检查指令
更多推荐
所有评论(0)