Docker - docker build 命令详解

这篇具有很好参考价值的文章主要介绍了Docker - docker build 命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker build 命令原理

  • docker build 命令从 Dockerfile 和上下文构建镜像
  • 构建的上下文:位于指定 PATH 或 URL 中的一组文件
  • 构建过程可以引用上下文中的任何文件,例如,构建可以使用 COPY 指令来引用上下文中的文件
  • PATH:就是本地文件系统上的一个目录路径
  • URL:Git 地址

个人理解:以设置的上下文为根目录,在 dockerfile 中写的文件路径都会以这个上下文开始找

构建上下文是递归处理的

PATH 包含任何子目录,URL 包含 repository 及其子模块

简单的例子

上下文为当前目录

也是最简单的 docker build 使用方式

docker build .
  • 指定 PATH 为 . ,因此本地目录中的所有文件都会被延迟并发送到 Docker 守护程序
  • PATH 指定在哪里可以找到 Docker 守护程序上构建的“上下文”的文件
  • 请记住,守护进程可以在远程机器上运行,并且不会在客户端(运行 docker build 的地方)解析 Dockerfile
  • 这意味着 PATH 中的所有文件都会被发送,而不仅仅是 Dockerfile 中列出的 ADD 文件
  • 当看到 Sending build context 消息时,docker 客户端的意思是将上下文从本地机器传输到 Docker 守护进程。
构建由 Docker 守护程序(Daemon)运行
  • 而不是 CLI(命令行)运行
  • 构建过程做的第一件事是将整个上下文(递归)发送到守护进程
  • 官方建议:将一个空目录作为上下文起点,并将 Dockerfile 保存在该目录中,仅添加构建 Dockerfile 所需的文件
特别注意

不要使用根目录 / 作为构建上下文的 PATH,因为会导致构建时,将硬盘驱动器的全部内容发送到 Docker 守护程序

逐一运行

  • Docker 守护进程将逐一运行 Dockerfile 中的指令,如有必要,会将每条指令的结果提交到新镜像,最后会输出一个最新镜像的 ID
  • Docker 守护进程将自动清理发送的上下文
  • 重点:每条指令都是独立运行的,并会创建一个新镜像,因此像 RUN cd /tmp 不会对下一条自定产生任何影响
  • 只要有可能,Docker 就会使用构建缓存来加速 Docker 构建过程,这由控制台输出中的 CACHED 消息指示
 > docker build -t svendowideit/ambassador .
 [internal] load build definition from Dockerfile                       0.1s
 => transferring dockerfile: 286B                                       0.0s
 [internal] load .dockerignore                                          0.1s
 => transferring context: 2B                                            0.0s
 [internal] load metadata for docker.io/library/alpine:3.2              0.4s
 CACHED [1/2] FROM docker.io/library/alpine:3.2@sha256:e9a2035f9d0d7ce  0.0s
 CACHED [2/2] RUN apk add --no-cache socat                              0.0s
 exporting to image                                                     0.0s
 => exporting layers                                                    0.0s
 => writing image sha256:1affb80ca37018ac12067fa2af38cc5bcc2a8f09963de  0.0s
 => naming to docker.io/svendowideit/ambassador                         0.0s

命令行参数

-f,–file

指定 dockerfile 路径

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

不指定的话,默认会读取上下文路径( . )下的 dockerfile

-t,–tag

指定构建的镜像名和 tag

docker build -t ubuntu-nginx:v1 . 

构建的镜像指定多个 tag

docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .
–add-host

可以使用一个或多个 --add-host 标志将其他主机添加到容器的 /etc/hosts 文件中

docker build --add-host=docker:10.180.0.1 .
–no-cache

构建镜像时不使用缓存

–network

在构建过程中为 RUN 指令设置网络模式

更多参数可以看官方文档
https://docs.docker.com/engine/reference/commandline/build/文章来源地址https://www.toymoban.com/news/detail-503008.html

到了这里,关于Docker - docker build 命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 27-Docker-常用命令详解-docker tag

    前言 本篇来学习docker tag 命令 docker tag 作用:标记本地镜像,将其归入某一仓库。 语法格式 使用示例 打了新的 TAG 虽然会多了一条记录,但是从 IMAGE ID 可以得知他们是同一个镜像

    2024年02月17日
    浏览(31)
  • 36-Docker-常用命令详解-docker inspect

    前言 本篇来学习docker inspect命令 docker inspect 作用:获取容器/镜像的元数据。 options说明 option 说明 -f 指定返回值的模板文件 -s 如果类型为容器,则显示文件总大小 –type 返回指定类型的JSON 使用示例 获取容器ip 获取容器mac地址 获取容器日志路径 获取容器镜像名 获取容器目

    2024年02月13日
    浏览(30)
  • 【Docker系列】从头学起 Docker——docker start 命令详解

    docker start:启动一个或多个已经被停止的容器 docker stop:停止一个或多个运行中的容器 docker restart:重启一个或多个容器 感觉没啥重要的 options,需要用到再补上 option 作用 -t, --time 杀死容器之前等待停止的秒数(默认为10) 目前只有一个 nginx 容器

    2024年02月14日
    浏览(29)
  • 【docker系列】详解docker容器状态转换管理命令

    本文系docker系列专栏第六篇。docker容器有三种状态运行、停止、暂停,镜像可以创建、运行容器,镜像和容器也可以转换成tar压缩包进行存储。本文为大家介绍容器的状态转换命令及镜像创建运行容器、tar包导入导出相关的命令及使用场景。 结合下文中的命令介绍来理解上面

    2023年04月25日
    浏览(36)
  • docker 的常用命令详解

    Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。下面是 Docker 的常用命令详解。 1. 镜像操作 docker images :列出

    2024年02月20日
    浏览(34)
  • Docker命令详解

    启动docker : systemctl start docker 停止docker : systemctl stop docker 重启docker : systemctl restart docker 查看docker状态 : systemctl status docker 开机启动 : systemctl enable docker 查看docker概要信息 : docker info 查看docker总体帮助文档 : docker --help 查看docker命令帮助文档 : docker 具体命令 --help 1

    2024年02月16日
    浏览(25)
  • 详解Docker ps命令

    docker ps 命令是 Docker 中用于列出正在运行的容器的命令。它用于查看当前在 Docker 守护进程中正在运行的容器的状态信息。以下是 docker ps 命令的主要用法和一些常用选项: 这将列出当前正在运行的容器的基本信息,包括容器的ID、名称、运行状态、对应的镜像、创建时间等。

    2024年04月23日
    浏览(18)
  • docker run 命令详解

    一、前言 Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上(包括流行的Linux机器、Windows机器),也可以实现虚拟化。以下是Docker容器的特点: 沙箱机制:容器是

    2024年02月02日
    浏览(33)
  • Docker Compose 命令详解

    一、docker-compose命令对象与格式 二、命令选项 三、命令使用说明 build 构建(重新构建)项目中的服务容器 config 检测compose文件的错误 up 启动服务 down 停止容器 images 列出项目中所包含的镜像 logs 查看服务容器的日志 kill 发送 SIGKILL 信号来强制停止服务容器 port 查看某个容器

    2024年02月12日
    浏览(25)
  • docker logs命令用法详解

    docker logs官档如下: docker logs | Docker Documentation 2.1 help命令 2.2 日志详情 --details 显示全部的日志详情。 2.3 跟踪日志输出 -f  --follow 2.4 显示最近的行数 -n  --tail 2.5 显示日志时间戳 -t 2.6 显示时间戳以来的日志 -since 2.7 显示指定时间戳之前的日志 --until 这个命令其实和上面的–

    2024年02月03日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包