Docker Build 下令详解:在 Ubuntu 上构建 Docker 镜像教程

打印 上一主题 下一主题

主题 769|帖子 769|积分 2307

简介

Docker 通过提供轻量级、可移植和高效的办理方案,彻底改变了软件开发和摆设。docker build 下令是 Docker 镜像创建过程的核心。本文将探究 docker build 下令、其语法、用法以及优化 Docker 构建的最佳实践。本教程的目标是手把手教你如安在 Linux 服务器上使用 docker build 下令构建 Docker 镜像。
准备工作

服务器准备

必要条件:


  • 一个布满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器

   以下步调仅供参考,请根据现实需求选择配置。
  

  • 点击 云产品云服务器立即购买
  • 选择间隔你较近的地区,以保证低延迟。



  • 按照自己需求选择配置,选择 Ubuntu 22.04 版本,按照自己需求是否预装 Docker。
  • 末了按照提示举行购买。
  • 购买后等待机器摆设完毕,点击刚刚创建好的服务器,进入管理面板,找到长途毗连相关信息。



  • 我们使用 PowerShell 举行 SSH 长途毗连到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。



  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。



  • 到此为止,我们的云服务器就长途毗连上了。
安装和配置步调

Docker build 的作用

那么,docker build 下令到底是什么?它在 Docker 生态系统中扮演着什么角色?docker build 是一个下令行接口(CLI)下令,它允许你根据 Dockerfile 中指定的指令构建 Docker 镜像。它自动化了镜像创建过程,确保了一致性和可重复性。
docker build 下令的语法和用法

要使用 docker build 下令,你必须起首了解它的语法。明白语法和可用选项将帮助你根据你的需求自界说构建过程。docker build 下令的语法如下:
  1. docker build [OPTIONS] PATH | URL
复制代码


  • OPTIONS: 指的是修改构建行为的标志和选项。
  • PATH | URL: 表示构建上下文,大概你想要设置 Docker 容器的位置,它可以是本地目次或长途 Git 仓库。
docker build 下令的常用选项和标志

通过明白 docker build 下令的语法和可用选项,你可以根据你的特定需求定制构建过程,无论是分配标签、指定备用 Dockerfile 位置、传递构建时变量照旧强制实行干净构建。
在使用 docker build 下令时,有几个常用的选项和标志,它们为构建过程提供了机动性和自界说功能。让我们通过示例来探索此中的一些选项和标志:


  • t 或 -tag:此选项允许你为构建的镜像分配标签,以便于引用和版本控制。在此示例中,构建的镜像将标志为 “sampleapp”,版本为 “latest”。
    示例用法: docker build -t sampleapp:latest .
  • f 或 file:如果 Dockerfile 的名称不是 “Dockerfile”,则可以使用此选项指定不同的 Dockerfile 名称或位置。在此示例中,将使用当前目次中名为 “ProductionDockerfile” 的 Dockerfile 构建镜像。
    示例用法: docker build -f ProductionDockerfile .
  • -build-arg:-build-arg 选项允许你将构建时变量传递给 Dockerfile,从而在构建过程中实现动态自界说。此下令将一个名为 “VERSION” 的构建时变量传递给 Dockerfile,其值为 “10”。
    示例用法: docker build --build-arg VERSION=10 .
  • -no-cache:此选项可用于强制 Docker 忽略缓存层并实行全新构建。此下令强制 Docker 忽略缓存并使用所有层实行全新构建。
    示例用法: docker build --no-cache .
  • -target:如果你的 Dockerfile 使用 FROM 指令界说了多个构建阶段,则 -target 选项允许你指定要构建的特定目标阶段。在此示例中,将仅构建 Dockerfile 中界说为 “mytarget” 的阶段。
    示例用法: docker build --target mytarget .
  • -quiet 或 q:-quiet 选项会克制构建输出,仅在成功构建镜像后体现最终镜像 ID。此下令以静默方式实行构建,仅体现生成的镜像 ID。
    示例用法: docker build --quiet .
这些只是一些常用的选项,Docker build 提供了更多选项和标志,你可以在 官方 Docker 文档 中探索。
Docker 构建的工作原理

Docker 构建过程会基于 Dockerfile 中的指令创建 Docker 镜像。此文件包罗构建指令,例如复制文件、安装依赖项、运行下令等。
当你运行 docker build 时,Docker 守护历程会读取 Dockerfile 并按顺序实行每条指令,生因素层镜像。每条指令都会创建一个轻量级、只读的文件系统快照,称为层。Docker 会缓存未更改的层,以加速后续构建速率。自前次构建以来未更改的层会被缓存和重用,避免了重建这些层的需要,从而显著缩短了构建时间。
一旦所有指令都实行完毕,Docker 就会创建包罗应用步伐及其依赖项的最终镜像,该镜像已准备好用于运行容器。
怎样从 Dockerfile 构建 Docker 镜像:分步指南

为了从 Dockerfile 构建 Docker 镜像,让我们看看 docker build 下令的现实应用。在以下步调中,我们将构建一个简单的 Docker 镜像,一个通过安装提供网页的 Web 服务器。你将在本地计算机上构建、运行和测试它。
第一步 - 创建一个工作目次

创建一个目次或文件夹用于此演示(此处使用 “docker-demo”),并通过在终端中运行以下下令导航到该目次:
  1. mkdir docker-demo
  2. cd docker-demo
复制代码
在目次中创建一个名为 “index.html” 的文件,并将以下内容添加到此中:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4.     <meta charset="UTF-8">
  5.     <title>Simple App</title>
  6.   </head>
  7.   <body>
  8.     <h1>Hello World</h1>
  9.     <p>This is running in a docker container</p>
  10.   </body>
  11. </html>
复制代码
这将用作服务器提供的网页。
第二步 - 选择一个基础镜像

接下来,从 Docker Hub 或本地仓库中选择一个合适的基础镜像。基础镜像构成了你的自界说镜像的基础,并包罗操纵系统和根本依赖项。险些每个 Docker 镜像都基于另一个镜像。在此演示中,你将使用 nginx:stable-alpine3.17-slim 作为基础镜像。
第三步 - 创建一个 Dockerfile

如今创建一个名为 “Dockerfile” 的文件。此文件将界说你的镜像的构建指令。默认环境下,当你运行 docker build 下令时,Docker 会搜索 Dockerfile。
第四步 - 将构建指令添加到 Dockerfile

在文本编辑器中打开 Dockerfile 并添加以下行:
  1. FROM nginx:stable-alpine3.17-slim
  2. COPY index.html /usr/share/nginx/html
  3. EXPOSE 80
  4. CMD ["nginx", "-g", "daemon off;"]
复制代码
上面的指令将创建一个 Docker 镜像,当基于该镜像启动容器时,该镜像通过 Nginx Web 服务器提供提供的 “index.html” 文件。
FROM 指令初始化一个新的构建阶段,并为后续指令设置基础镜像。COPY 指令将文件或目次(通常是源代码)从源复制到镜像内的指定位置。它将文件复制到 “/usr/share/nginx/html” 目次,这是 Nginx Web 服务器中用于提供静态文件的默认位置。CMD 指令的主要目的是为实行容器提供默认值。Dockerfile 中界说的指令会因你实验构建的镜像类型而异。
第五步 - 使用 docker build 下令构建镜像

在构建 Docker 镜像之前,请通过运行 docker --version 下令确认你已安装 Docker。

要构建你的容器,请确保你位于 Dockerfile 所在的文件夹中,并在终端中运行以下下令:
  1. docker build -t sampleapp:v1 .
复制代码
此下令启动 Docker 构建过程,以基于当前目次(.)中的 Dockerfile 中指定的指令创建 Docker 镜像。


  • t 标志指定镜像的标签,允许你为其分配名称和版本。在这种环境下,镜像将标志为 “sampleapp”,版本为 “v1”,为镜像提供了一个形貌性标识符,使其更易于引用和管理。
你应该看到构建过程开始,并在完成时看到一个指示它已完成的输出。

第六步 - 验证构建的 Docker 镜像

成功构建后,通过运行 docker images 下令来验证镜像,以列出 Docker 主机上所有可用的镜像。你应该看到你新创建的镜像及其分配的标签和其他相关详细信息,已准备好用于运行容器或推送到容器注册表以举行分发。

第七步 - 运行 Docker 镜像

接下来,使用以下下令将 Docker 镜像作为容器运行:
  1. docker run -p 8080:80 sampleapp:v1
复制代码
此下令告诉 Docker 运行 sampleapp 容器。-p 标志指定端口映射,它将主机上的端口映射到容器内的端口。在这里,你将主机的 8080 端口映射到容器的 80 端口。你可以根据自己的喜欢修改主机端口。请确保指定构建镜像时使用的镜像名称和版本。

第八步 - 访问应用步伐

容器运行后,你可以继续访问应用步伐。打开 Web 欣赏器并导航到 localhost:8080,你应该会在 Web 欣赏器上看到体现的示例网页。

优化 Docker 构建的最佳实践

以下是一些你可以遵循的最佳实践,以优化你的 Docker 构建并确保效率:


  • 确保你的 Dockerfile 轻便、有条理且易于维护。将复杂的使命分解为更小、可重用的指令,从而进步可读性并简化故障排除和更新。
  • 在你的 Dockerfile 中使用轻量级镜像作为基础镜像,并确保你只在镜像中安装根本的东西。较小的镜像不但可以进步性能,还可以在摆设期间减少资源斲丧。
  • 使用 .dockerignore 以确保你只添加了你需要的文件。
  • 使用 Docker 的缓存机制来加速后续构建。使用不经常更改的层,或在必要时使用 -no-cache=true 标志。这对于大型项目尤其有用。
  • 在实用时考虑使用多阶段构建。它们允许你将构建依赖项与最终运行时镜像分开,从而缩小镜像大小。
这些实践将进步你的 Docker 构建的效率,从而缩短构建时间、缩小镜像大小、进步性能并创建可靠的镜像。你可以从文档中阅读有关 docker 构建最佳实践 的更多信息。
故障排除 docker build 下令问题

即使使用最佳实践,你可能在 Docker 构建过程中偶尔会碰到问题。以下是一些常见问题及其潜伏办理方案:


  • 错误:“无法找到 Dockerfile”: 确保你正在从包罗 Dockerfile 的目次中运行 docker build 下令。
  • 构建失败或出现意外结果: 检查 Dockerfile 语法,并确保所有依赖项和下令都已正确指定。查看构建日志和错误消息,并考虑使用 -no-cache 选项实行干净构建。
结论

docker build 下令使开发人员能够将你的应用步伐转换为可以在任何地方运行的可移植容器。在本指南中,我们研究了 Docker 构建过程的工作原理、Docker 构建语法和最佳实践,以及怎样从 Dockerfile 分步构建 Docker 镜像。你应该更好地了解 docker build 下令以及怎样使用它,并使用这些知识来构建更多自界说 Docker 镜像,以使你的应用步伐可移植。
推广链接:


  • 雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
  • 我的博客:https://blog.ivwv.site

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表