APP下载

docker build 详解

消息来源:baojiabao.com 作者: 发布时间:2024-05-12

报价宝综合消息docker build 详解

主要内容

docker build就是从Dockerfile构建映像。

主命令

docker build URL | - | [OPTIONS] PATH

docker build URL

URL引数可以引用三种资源:Git储存库,预打包的tarball上下文和纯文字档案。

Git储存库当URL引数指向Git储存库的位置时,储存库充当构建上下文。系统递回地获取储存库及其子模组。提交历史记录不会保留。储存库首先被拉入本地主机上的临时目录。成功之后,目录将作为上下文传送到Docker守护程式。本地副本使您能够使用本地使用者凭据,VPN等访问专用储存库。

Git URL在其片段中接受上下文配置,以冒号分隔:。第一部分代表Git将检出的引用,可以是分支,标记或远端引用。第二部分表示储存库中的一个子目录,该子目录将用作构建上下文。

例如,执行此命令以使用docker分支中呼叫的目录container:

$ docker build https://github.com/docker/rootfs.git#container:docker

预打包的tarball上下文如果将URL传递给远端tarball,则URL本身将传送到守护程式:

$ docker build http://server/context.tar.gz

下载操作将在执行Docker守护程式的主机上执行,该主机不一定是发出构建命令的主机。Docker守护程式将获取context.tar.gz并将其用作构建上下文。Tarball上下文必须是符合标准tarUNIX格式的tar档案, 并且可以使用'xz','bzip2','gzip'或'identity'(无压缩)格式中的任何一种进行压缩。

纯文字档案 (见接下来docker build -)

docker build -

除了指定一个上下文,你可以通过一个单一Dockerfile的 URL或管道中通过档案STDIN。管道Dockerfile来自STDIN:

$ docker build - 在Windows上使用Powershell,您可以执行:

Get-Content Dockerfile | docker build -

如果您使用STDIN或指定一个URL指向一个纯文字档案时,系统将内容放入一个名为Dockerfile,任何-f,--file 选项被忽略。在这种情况下,没有上下文。

docker build [OPTIONS] PATH

名字,缩写 预设 描述

--add-host 新增自定义主机到IP对映(host:ip)

--build-arg 设定构建时变数

--cache-from 要考虑作为快取源的影象

--cgroup-parent 容器的可选父cgroup

--compress 使用gzip压缩构建上下文

--cpu-period 限制CPU CFS(完全公平计划程式)期间

--cpu-quota 限制CPU CFS(完全公平计划程式)配额

--cpu-shares , -c CPU份额(相对权重)

--cpuset-cpus 允许执行的CPU(0-3,0,1)

--cpuset-mems 允许执行的MEM(0-3,0,1)

--disable-content-trust true 跳过影象验证

--file , -f Dockerfile的名称(预设为'PATH / Dockerfile')

--force-rm 始终移除中间容器

--iidfile 将影象ID写入档案

--isolation 容器隔离技术

--label 设定影象的元资料

--memory , -m 内存限制

--memory-swap 交换限制等于内存加交换:' - 1以启用无限制交换

--network API 1.25+在构建期间设定RUN指令的网络模式

--no-cache 构建映像时不要使用快取

--platform API 1.32+如果服务器具有多平台功能,则设定平台

--progress auto 设定进度输出型别(auto,plain,tty)。使用plain显示容器输出

--pull 始终尝试拉出较新版本的影象

--quiet , -q 成功时禁止构建输出并打印影象ID

--rm true 成功构建后删除中间容器

--secret API 1.39+要暴露给构建的秘密档案(仅当启用了BuildKit时):id = mysecret,src = / local / secret

--security-opt 安全选项

--shm-size / dev / shm的大小

--squash API 1.25+将新构建的图层压缩到一个新图层中

--ssh API 1.39+SSH代理套接字或用于公开构建的金钥(仅当启用了BuildKit时)(格式:default |[=|[,]])

--stream API 1.31+Stream附加到服务器以协商构建上下文

--tag , -t 以“name:tag”格式命名和选择标记

--target 设定要构建的目标构建阶段。

--ulimit Ulimit选项

例子1 预设

$ docker build .

此示例指定PATH 是 .,因此本地目录中的所有档案都将获取tar并发送到Docker守护程式。该PATH指定在哪里可以找到档案上的Docker守护程式生成的“背景”。请记住,守护程式可以在远端计算机上执行,​​并且不会在客户端(您正在执行的位置docker build)解析Dockerfile 。这意味着get传送的所有档案PATH,而不仅仅是Dockerfile中列出的ADD档案。

从本地计算机到Docker守护程式的上下文传输是docker客户端在看到“传送构建上下文”讯息时的含义。

如果您希望在构建完成后保留中间容器,则必须使用--rm=false。这不会影响构建快取。

例子2 标记影象(-t)

$ docker build -t vieux/apache:2.0 .

这将像前面的示例一样构建,但它将标记生成的影象。储存库名称将是vieux/apache,tag将是2.0。 您可以将多个tag应用于image。例如,您可以将latest 标记应用于新构建的image,并新增另一个引用特定版本的tag。例如,要将image标记为whenry/fedora-jboss:latest和 whenry/fedora-jboss:v2.1,请使用以下内容:

$ docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 .

关于其他命令的使用比如指定Dockerfile(-f),使用自定义父cgroup(--cgroup-parent),在容器中设定ulimits(--ulimit),设定构建时变数(--build-arg),使用.dockerignore档案,可选的安全选项(--security-opt),指定目标构建阶段(--target)等等其他一系列指令的使用例子在这里就不一一列举,自行去官网了解。

最后

预设情况下,该docker build命令将Dockerfile在构建上下文的根目录中查询。-f,--file选项允许您指定要使用的备用档案的路径。在将同一组档案用于多个构建的情况下,这非常有用。路径必须是构建上下文中的档案。如果指定了相对路径,则将其解释为相对于上下文的根。

在大多数情况下,最好将每个Dockerfile放在一个空目录中。然后,仅向该目录新增构建Dockerfile所需的档案。要提高构建的效能,您还可以通过.dockerignore向该目录新增档案来排除档案和目录。有关建立一个的资讯,请参阅.dockerignore档案。

如果Docker客户端失去与守护程式的连线,则构建将被取消。如果您CTRL-c因为任何原因中断Docker客户端或Docker客户端被终止,则会发生这种情况。如果构建启动了在取消构建时仍在执行的拉动,则拉动也会被取消。

喜欢小编的记得关注(码农爱code)哦。

2019-10-26 21:02:00

相关文章