Usage

使用方法

docker build命名根据dockerfile上下文(context)来构建一个镜像。

docker build命令从Dockerfile上下文构建映像。构建的上下文是位于指定位置PATHURL的文件集。 PATH是本地文件系统上的目录。该URL是一个Git存储库位置。

上下文递归处理的。因此,PATH包括任何子目录,而URL包括存储库及其子模块。此示例显示了一个使用当前目录作为上下文的构建命令:

docker build . #从当前上下文构建镜像

Sending build context to Docker daemon  6.51 MB
...

构建(build)是由Docker守护进程而不是CLI运行的。构建过程要做的第一件事是将整个上下文(递归)发送到Docker守护进程。在大多数情况下,最好以空目录作为上下文,并将Dockerfile保留在该目录中。仅添加构建Dockerfile所需的文件。

要在构建上下文中使用文件,Dockerfile引用指令(例如COPY指令)中指定的文件。为了提高构建的性能,请通过在上下文目录中添加.dockerignore文件来排除相应的文件和目录。

通常,Dockerfile位于上下文的根目录中。将-fdocker build组合起来使用可以指向文件系统中任何位置的Dockerfile

Note: 不要将根目录/用作PATH,因为它会导致构建将硬盘驱动器的全部内容传输到Docker守护进程。

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

如果构建成功,则可以指定存储镜像的存储库和标签(tag)

$ docker build -t shykes/myapp .

同时构建多个镜像:

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

Docker守护进程运行Dockerfile中的指令之前,它会对Dockerfile进行初步验证,如果语法不正确,则会返回错误:

$ docker build -t test/myapp .

Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD

Docker守护进程逐一运行Dockerfile中的指令,并在最终输出新镜像的ID之前,如有必要,将每个指令的结果提交到新镜像。 Docker守护进程会自动清理发送的上下文。

Note: 每条指令都是独立运行的,每条指令运行时会创建一层新的镜像-因此RUN cd /tmp对下一条指令不会有任何影响。

Docker将尽可能的重用中间镜像(缓存),以加快Docker镜像的构建过程。这由控制台输出中的"Use Cache"消息指示。

$ docker build -t svendowideit/ambassador .

Sending build context to Docker daemon 15.36 kB
Step 1/4 : FROM alpine:3.2
 ---> 31f630c65071
Step 2/4 : MAINTAINER SvenDowideit@home.org.au
 ---> Using cache
 ---> 2a1c91448f5f
Step 3/4 : RUN apk update &&      apk add socat &&        rm -r /var/cache/
 ---> Using cache
 ---> 21ed6e7fbb73
Step 4/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
 ---> Using cache
 ---> 7ea8aef582cc
Successfully built 7ea8aef582cc

构建缓存仅用于具有本地父链的镜像。这意味着这些镜像是由以前的版本创建的,或者整个镜像链都已由docker load加载。如果希望使用特定镜像的构建缓存,则可以使用--cache-from选项来指定它。用--cache-from指定的镜像不需要具有父链,并且可以从其他docker仓库拉取。

当我们构建好镜像以后,可以将镜像推送到自己的私人仓库。

如何push镜像

Last updated