主要内容
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 - < Dockerfile
在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)哦。