Dockerfile参考(1) – 用法

docker build命令从Dockerfile文件和上下文构建一个镜像。构建的上下文是一个指定的PATH或URL位置。PATH是你本地文件系统的一个目录。URL是git仓库地址。
上下文是递归处理的。所以PATH包括所有的子目录,URL包括仓库和它的子模块。下面是使用当前目录作为上下文的简单build命令:

  1. $ docker build .
  2. Sending build context to Docker daemon  6.51 MB
  3. ...

build命令来docker daemon运行,不是由CLI。build进程的第一件事是递归发送整个上下文给daemon。大多数情况下,最好使用一个空的目录作为上下文并放置Dockerfile到此目录。只添加构建Dockerfile时所需的文件。

警告:不要使用root目录/作为PATH,因为它会导致build传递你硬盘的所有内容到docker daemon。

Dockerfile包括了一系列用于构建镜像的指令,例如COPY指令。为了提高构建性能,可以通过添加.dockerignore文件到上下文目录来排除文件和目录。
通常称为Dockerfile的Dockerfile文件放置在上下文的根目录。你可以将docker build与-f参数一起使用来指向你文件系统的任何位置的Dockerfile。

  1. $ docker build -f /path/to/a/Dockerfile .

可以使用-t参数指定保存新镜像的仓库和标签:

  1. $ docker build -t shykes/myapp .

要标记镜像到多个仓库,可以在build命令中使用多个-t参数:

  1. $ docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .

docker daemon一个接一个运行Dockerfile中的指令,在最后生成新镜像之前,如果需要,将提交每一个指令的结果到新镜像。docker daemon会自动清理你发送过来的上下文。
注意每个指令都是独立运行的,所以RUN cd /tmp不会对下一个指令有任何影响。
如果有可能,docker会重用镜像缓存来加速docker build进程。在控制台输出中使用到缓存时将显示Using cache消息。如:

  1. $ docker build -t svendowideit/ambassador .
  2. Sending build context to Docker daemon 15.36 kB
  3. Step 1 : FROM alpine:3.2
  4.  ---> 31f630c65071
  5. Step 2 : MAINTAINER SvenDowideit@home.org.au
  6.  ---> Using cache
  7.  ---> 2a1c91448f5f
  8. Step 3 : RUN apk update &&      apk add socat &&        rm -r /var/cache/
  9.  ---> Using cache
  10.  ---> 21ed6e7fbb73
  11. Step 4 : CMD env | grep _TCP= | (sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat -t 100000000 TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \&/' && echo wait) | sh
  12.  ---> Using cache
  13.  ---> 7ea8aef582cc
  14. Successfully built 7ea8aef582cc
标签:Docker 发布于:2019-11-20 00:18:29