Docker Ubuntu 镜像2025年3月17日 | 阅读13分钟 容器化概念改变了应用程序的创建、开发、部署、测试、监控以及在生产环境中打包的方式。在引入容器技术之前,企业和组织在人力、时间和金钱方面花费了大量资源来设置物理服务器和虚拟机,并在其上部署应用程序组件和应用程序本身。 这个过程可以完成工作并且是安全的;然而,整个过程有点麻烦。开发人员需要经历创建环境、设置虚拟机和安装运行应用程序所需的二进制文件、包等的困难。通过虚拟机分发应用程序给多个开发人员也很困难。由于虚拟机运行在底层基础设施硬件之上,因此占用了大量资源。因此,需要一种更快、更有效的方式来改变整个开发生命周期。
Docker 是一个开源且领先的容器服务提供商。自推出以来,它主导了整个市场。它易于理解,并使应用程序的部署和开发更加简单。 然而,当新手开始理解 Docker 容器化时,诸如注册表、docker-engine、docker hub、volumes、images、containers 等术语可能会让人感到困惑。 Docker 镜像简介Docker 镜像可以描述为在 Docker 容器中执行代码的文件。Docker 镜像充当构建 Docker 容器的指令集,例如模板。此外,使用 Docker 时,Docker 镜像充当起点。在虚拟机环境中,快照类似于镜像。 Docker 用于在容器中创建、运行和部署应用程序。Docker 镜像包含应用程序代码、依赖项、工具、库以及运行任何应用程序所需的其他文件。如果用户执行镜像,它可以变成一个或多个容器实例。 Docker 镜像包含多个层,它们源自旧层但与之不同。
Docker 镜像是我们创建的整个应用程序环境的蓝图。镜像也是只读的,这意味着我们无法对其进行修改;因此,镜像是不可变的。尽管如此,当我们创建相关的容器时,它们将是可写的。
**例如,** 假设我们想创建一个 Docker 容器和镜像来托管任何 Web 应用程序。我们需要遵循一个过程来做到这一点。但在深入研究这个过程之前,让我们先了解一些基本术语。
要构建用于托管任何 Web 应用程序的 Docker 镜像,我们必须使用 Nginx 服务器来提供页面。我们首先需要构建一个 dockerfile,其中包含创建镜像的指令。然后,通过描述指令 **"FROM UBUNTU"**,从 Dockerhub 拉取 Ubuntu Docker 基础镜像,这是第一次。 这意味着当我们创建镜像后创建一个容器时,我们可以使用 Ubuntu 操作系统并通过命令行在其上工作。之后,我们必须使用指令 **"Run <command>"** 来获取 Nginx Web 服务器。 在这里,我们可以定义任何命令。这意味着当容器构建完成时,命令将运行。通常,它用于安装包、更新操作系统等。我们必须以与在 Linux 机器上获取包相同的方式使用此命令来获取 Nginx。 Docker 的用例Docker 镜像包含运行容器化应用程序所需的一切,例如库、运行时、环境变量、配置文件和代码。当镜像被部署到 Docker 环境中时,它就可以作为 Docker 容器运行。Docker 的 run 命令可以根据特定镜像创建一个容器。 Docker 镜像是一种可重用的资产,可以在主机上部署。开发人员可以从单个项目中获取静态镜像的层并将其应用于另一个项目。这节省了用户的时间,因为他们不需要从头开始重新创建任何镜像。 Docker 镜像与 Docker 容器的区别Docker 容器可以被描述为用于应用程序开发中的虚拟化运行时环境。它用于创建、运行和部署与底层硬件隔离的应用程序。Docker 容器可以利用单个机器,共享其内核,并虚拟化操作系统以运行更多隔离的进程。因此,Docker 容器非常轻量级。 Docker 镜像与虚拟机环境中其他类型的快照相同。它是 Docker 容器在特定时间点的记录。此外,Docker 镜像是不可变的。它们可以被删除、共享或复制,但不能被修改。此功能有助于测试新的软件配置,因为无论发生什么,镜像都不会改变。 容器需要一个可运行的镜像才能存在。它们依赖于镜像,因为它们用于构建运行时环境并需要运行应用程序。 Docker 镜像的解剖Docker 镜像包含多个层,所有镜像都包含配置容器环境所需的一切:依赖项、工具、系统库和其他文件。以下是一些镜像部分的说明和解释 ![]() 1. 基础镜像用户可以完全使用 build 命令从头开始创建此初始层。 2. 父镜像父镜像可以是 Docker 镜像中的初始层,而不是基础镜像。它是一个被重用的镜像,充当所有其他镜像的基础。 3. 容器层Docker 镜像不仅仅创建一个新容器,还创建一个容器或可写层。它托管对活动容器所做的修改,并保存新删除和写入的文件,以及对现有文件的修改。此外,此层用于自定义容器。 4. 层许多层通过代码连接到基础镜像,这些代码允许它在容器中执行。所有 Docker 镜像层都可以在 **/var/lib/docker/aufs/diff** 目录中查看,或者通过 CLI (Command Line Interface) 的 docker history 命令查看。 Docker 的默认状态是显示所有顶层镜像,如文件大小、标签和仓库。中间层被缓存,便于顶层镜像查看。Docker 包含管理镜像层内容管理的存储驱动程序。 5. Docker manifest此 Docker 镜像部分是一个额外文件。它使用 JSON 格式来描述镜像,包含数字签名和镜像标签等信息。 Docker 镜像仓库Docker 镜像存储在公共或私有仓库中,例如 **Docker Hub** 的云注册表服务,所有用户都可以从中获取容器并共享和测试镜像。 **Docker Hub** 的 **Docker Trusted Registry** 还提供访问控制和镜像管理功能。 官方镜像是 Docker 生成的,而社区镜像是 Docker 用户制作的镜像。**CoScale agent** 可以被描述为 Docker 的一个官方镜像,用于检查 Docker 应用程序。**Docker-dd-agent/Datadog** 是一个 Docker 容器,用于 Datadog 的日志管理程序中的代理。 这是社区 Docker 镜像的一个例子。
如何制作 Docker 镜像?所有 Docker 镜像都可以从 **Dockerfile** 或 **交互式** 方法创建。这两种方法列出并解释如下: ![]() Dockerfile 方法此方法需要创建一个纯文本 **Dockerfile**。这个 **Dockerfile** 建立了创建镜像的规范。此过程耗时且复杂,但在持续交付环境中效果很好。该过程包括创建 **Dockerfile** 并包含镜像所需的命令。 用户构建一个文件,即 **dockerignore**,用于在 **Dockerfile** 开始后排除最终框架不需要的文件。文件,即 **Dockerignore**,位于根目录。Docker 的 build 命令用于创建 Docker 镜像,设置镜像名称和标签。Docker images 命令用于查看创建的镜像。 交互式方法用户使用现有的 Docker 镜像执行一个容器,并在保存镜像之前手动进行任何必要的环境修改。此方法是创建 Docker 镜像的最简单方法之一。第一步是打开任何终端会话并启动 Docker。 然后,应用 Docker 的 run 命令,即 **image_name:tag_name**。这会启动一个 shell 会话,以及通过镜像启动的容器。如果省略标签名称,Docker 将使用镜像的最新版本。镜像必须出现在结果中。 交互式方法的优点这是创建 Docker 镜像最简单快捷的方法。它非常适合测试和排除故障确定的依赖项以及非常规的过程。 交互式方法的缺点它具有复杂的生命周期管理,需要手动重新配置(易出错)许多实时交互式过程。使用不必要的层设计未优化镜像很容易。 Docker 镜像命令根据 Docker,有一组主要的 Docker 镜像命令。这些命令分为许多子命令。其中一些命令列出并解释如下:
Docker 的命令行界面提供了许多用于自定义许多 Docker 镜像的命令。下面列出并解释了一些 Docker 镜像命令的示例:
镜像层构成 Docker 镜像的所有文件称为一个层。这些层构成了中间镜像的系列,在各个阶段一个接一个地创建,其中每个层都依赖于其正下方的层。我们层的层次结构是我们 Docker 镜像方便生命周期管理的关键。 父镜像在大多数情况下,Docker 镜像的初始层称为父镜像。它是所有其他层在其下创建的基础,并为我们的容器环境提供了通用的构建块。我们可以在公共容器注册表 Docker Hub 上看到大量现成的应用程序镜像作为我们的父镜像。 此外,我们可以在少量第三方服务(如 **Google Container Registry**)上看到它们。我们也可以选择使用我们现有的一个镜像作为基础来创建新的镜像。一个普通的父镜像可能是 Linux 的精简发行版,或者提供预装的服务,如内容管理系统(CMS)或数据库管理系统(DBMS)。 基础镜像简单来说,基础镜像可以被描述为一个空的初始层,它允许我们从头开始创建自己的 Docker 镜像。这些镜像为我们提供了对镜像内容的完全控制,但基本上是为更高级的 Docker 用户设计的。 容器注册表容器注册表是存储目录的存储位置,称为仓库,我们可以在其中推送和拉取容器镜像。 下面列出并讨论了三种主要的注册表类型: ![]()
Dockerfile 方法**Dockerfile** 方法是企业级和真实世界容器部署的首选方法。它是构建 Docker 镜像的一种更高效、更灵活、更系统的方法,是实现安全、可靠和紧凑容器环境的关键。 **Dockerfile** 方法简而言之是一个三步过程,我们在其中创建 Dockerfile 并包含组装镜像所需的命令。 下表展示了我们最常使用的 **Dockerfile** 语句。
Dockerfile 方法的优点它提供了可重复、紧凑和干净的基于配方的镜像。它提供了方便的生命周期管理,并方便集成到持续交付 (CD) 和持续集成 (CI) 流程中。此外,此方法包含一个相当自文档化的步骤记录,用于组装镜像。 Dockerfile 方法的缺点对于初学者来说更复杂。此外,从头开始创建镜像非常耗时。 下一主题卸载 Chrome Ubuntu |
我们请求您订阅我们的新闻通讯以获取最新更新。