Dockerfile用法
docker build命令从Dockerfile和上下文构建映像。构建版本的上下文是指定位置PATH或URL上的一组文件。PATH是您本地文件系统上的目录。URL是一个Git存储库位置。
构建上下文是递归处理的。因此,PATH包含任何子目录,URL包括存储库及其子模块。以下示例显示了使用当前目录(.)作为构建上下文的构建命令:
docker build .
您可以使用带有docker build的-f
标志指向文件系统中任何地方的Docker文件。
docker build -f /path/to/a/Dockerfile .
如果构建成功,您可以指定保存新映像的存储库和标签
docker build -t shykes/myapp .
要在构建后将映像标记到多个存储库中,请在运行build命令时添加多个-t
参数
docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .
在Docker守护程序运行Dockerfile中的指令之前,它会对Dockerfile进行初步验证,如果语法不正确,则返回错误
Docker守护进程在Dockerfile逐一运行指令,必要时将每个指令的结果提交到新映像,然后最终输出新映像的ID。Docker守护程序将自动清理您发送的上下文。
请注意,每个指令都是独立运行的,并导致创建新映像——因此RUN cd /tmp不会对下一个指令产生任何影响。
只要有可能,Docker都会使用构建缓存来显著加快docker build过程。这由控制台输出中的CACHED消息指示。
了解更多-> Dockerfile最佳使用指南
完成构建后,您就可以使用docker scan
来扫描图像,并将图像推送到Docker Hub。
Dockerfile格式
注释
- Docker将以
#
开头的行视为注释,除非该行是有效的解析器指令。行中其他地方的#标记被视为参数。 - 在执行Dockerfile指令之前,注释行将被删除。
命令
构建 | Both | 启动 |
FROM | WORKDIR | CMD |
MAINTAINER | USER | ENV |
COPY | EXPOSE | |
ADD | VOLUME | |
RUN | ENTRYPOINT | |
ONBULID | ||
.dockerignore |
FROM # 指定基础镜像
MAINTAINER # 指定维护者信息,姓名+邮箱
RUN # 执行命令
COPY # 将文件拷贝到镜像中
ADD # 添加内容
ONBULID # 触发指令,当构建一个被继承的Dockerfile时
WORKDIR # 设置当前目录
VOLUME # 设置卷,挂载主机目录
EXPOSE # 暴露端口
CMD # 容器启动的时候要运行的命令(只有最后一个会生效,可被替代
ENTRYPOINT # 容器启动的时候要运行的命令(可以追加命令
ENV # 构建的时候设置环境变量