docker build与Dockerfile问题
作者:kaili230
这篇文章主要介绍了docker build与Dockerfile问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
docker build与Dockerfile
docker build常用命令
docker build . # 默认使用当前目录下Dockerfile docker build . -f centosdockerfile # 其他名称dockerfile,需要指定 docker build -t ghostwritten/app . # 指定镜像名 docker build -t ghostwritten/app:1.0.2 -t ghostwritten/app:latest . # 指定多个tag # Dockerfile文件中的每条指令会被独立执行,并会创建一个新镜像,Docker 会重用已生成的中间镜像,以加速docker build的构建速度,也可以通过--cache-from指定 docker build -t ghostwritten/app --cache-from 31f630c65071 . docker build -t ghostwritten/app --no-cache . # 不使用缓存
Dockerfile
FROM # 构建自己所需镜像使用的基础镜像 MAINTAINER # 即将构建镜像的作者,格式为: 姓名<邮箱> ENV # 设置环境变量 USER # 为RUN、CMD、ENTRYPOINT执行命令指定运行用户 WORKDIR # 镜像启动后在哪个工作目录 RUN # 镜像构建时需要的命令 COPY # 拷贝文件或目录到镜像中 ADD # 需要向镜像中注入的配置文件或者压缩包等 VOLUME # 挂载的目录,可以是匿名挂载或者具名挂载 EXPOSE # 声明容器中运行的服务的端口 CMD # 容器启动的时候运行的指令,若写多个的话,只有一个生效,可以运行时在容器外部重新指定 ENTRYPOINT # 与CMD命令类似,但ENTRYPOINT可以在容器外追加命令 ONBUILD # 当构建一个被继承DockerFile,这时会运行ONBUILD命令
docker build 指定dockerfile
docker build命令会根据Dockerfile文件及上下文构建新Docker镜像。
构建上下文是指Dockerfile所在的本地路径或一个URL(Git仓库地址)。
构建上下文环境会被递归处理,所以,构建所指定的路径还包括了子目录,而URL还包括了其中指定的子模块。
将当前目录做为构建上下文时,可以像下面这样使用docker build命令构建镜像:
$ docker build . Sending build context to Docker daemon 6.51 MB ...
说明:构建会在Docker后台守护进程(daemon)中执行,而不是CLI中。构建前,构建进程会将全部内容(递归)发送到守护进程。大多情况下,应该将一个空目录作为构建上下文环境,并将Dockerfile文件放在该目录下。
在构建上下文中使用的Dockerfile文件,是一个构建指令文件。为了提高构建性能,可以通过.dockerignore文件排除上下文目录下,不需要的文件和目录。
Dockerfile一般位于构建上下文的根目录下,也可以通过-f指定该文件
$ docker build -f /path/to/a/Dockerfile .
构建时,还可以通过-t参数指定构建成后,镜像的仓库、标签等:
docker build -f Dockerfile.test -t image-train-test .
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。