带有多个参数的 Docker 构建命令
docker build
命令允许我们从 Dockerfile 创建 Docker 映像。它还允许我们从引用一组文件的上下文构建镜像,这些文件位于 PATH 或 URL 指定的位置。
另一方面,Dockerfile 只是一个只读文本文档,其中包含在组装我们的 Docker 映像时将调用的指令。Docker 映像是我们用来构建 Docker 容器的指令集、应用程序代码、依赖项、工具和库。
本教程演示了如何使用 docker build
命令和多个参数。
带有多个参数的 docker build
命令
docker build
命令通常在终端或命令行中执行。
语法:
docker build [options] <directory path or URL>
PATH 或 URL 是指上下文中的一组文件,其中可能包括资源,例如预打包的 tarball 上下文、纯文本文件,甚至是 git 存储库。如果所有文件都存储在本地目录中,即与 Dockerfile 相同的目录,我们可以选择使用 .
作为路径。
此路径指定用于 docker 守护程序上的构建上下文的文件。
docker build .
我们可以在构建期间在 options 参数下传递多个参数。使用 –build-arg
标签,我们可以设置用户可以在构建时设置的值。
然而,我们首先需要在我们的 Dockerfile 中定义一个 ARG
指令,然后再使用 --build-arg
标签来构建镜像。我们可以像访问常规环境变量一样访问这个构建时变量;但是,它们在构建映像后不会持续存在。
虽然 ARG 指令的范围有限,但可以在指定基本映像之前声明它。我们还可以通过使用单独的 --build-arg
标签分别传递每个参数来传递多个构建参数。
语法:
docker build -t <image-name>:<tag> --build-arg <key1>=<value1> --build-arg <key2>=<value2> .
我们有一个简单的 Dockerfile,它在以下示例中定义了一些 ARG
值。在这种情况下,我们没有设置它们的默认值。
Docker 文件如下所示。
# base image
FROM python
ARG language
ARG name
# Set your working directory
WORKDIR /var/www/
# Copy the necessary files
COPY ./app.py /var/www/app.py
# Install the necessary packages
RUN pip install -r /var/www/requirements.txt
RUN echo "Hello $language Developer"
MAINTAINER Isaac Tonyloi
因此,我们应该在构建镜像时使用 -build-arg
标签传递值。
~/my-app$ docker build --build-arg language=Java .
使用上面的命令构建镜像将在其他文件旁边打印消息 Hello Java Developer
,如下所示。
0.0s
=> [5/6] RUN pip install -r /var/www/requirements.txt 100.4s
=> [6/6] RUN echo "Hello Java Developer" 4.4s
=> exporting to image 3.8s
=> => exporting layers 2.8s
=> => writing image sha256:22fa358b711d2ea3a1d72e59f062f6c7c38b414bdb253fb8d0def20222cadd93
我们还可以使用多个 --build-arg
标签将 docker build
与多个命令一起使用。
/my-app$ docker build \
> --build-arg language=Java \
> --build-arg name=Tonyloi \
> .
这将在下方和其他消息旁边打印消息。虽然这是非常基本的,但这是在从 Dockerfile 构建 Docker 映像时传递多个命令的方式。
输出:
=> [2/2] RUN echo "Hello Java Developer and my name is Tonyloi" 3.3s
=> exporting to image 3.0s
=> => exporting layers 2.0s
=> => writing image sha256:d4d7c3b18aa9422be2990f5381a5423a18867dda8090dd4a4f166efc4e7c4ba2
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn