在 Ubuntu 上安装 Docker

2025年3月29日 | 阅读 9 分钟

我们可以在任何操作系统上安装docker,无论是Mac、Windows、Linux还是任何云。Docker Engine 本地运行在 Linux 发行版上。在这里,我们提供了在 Linux Ubuntu Xenial-16.04 [LTS]上安装docker engine 的分步过程。

Docker 简介

Docker 可以被描述为一个用于开发、分发和运行应用程序的开放平台。Docker 允许我们将应用程序与基础设施隔离开来,从而能够快速交付软件。我们可以像使用 Docker 管理应用程序一样管理我们的基础设施。通过利用 Docker 快速分发、测试和部署代码的方法的优势,我们可以显著缩短从编写代码到在生产环境中运行代码之间的延迟。

Docker 的背景

容器彼此隔离,并将它们的配置文件、库和软件捆绑在一起。它们可以通过定义明确的通道进行通信。与虚拟机相比,容器使用的资源更少,因为每个容器都分担了一个操作系统的内核服务。每个容器分担一个操作系统内核的服务。

操作

Docker 可以包含一个应用程序及其依赖项在一个抽象的容器中,该容器可以在 macOS、Windows 或 Linux 计算机上运行。它允许应用程序在各种位置运行,包括私有云、公共云或本地。Docker 利用 Linux 内核的资源隔离特性(如内核命名空间和 cgroups)以及联合文件系统(如 OverlayFS),允许容器在单个 Linux 实例中运行,而无需启动和管理虚拟机的开销。在 macOS 上,docker 利用 Linux 虚拟机来运行容器。

一个虚拟机或服务器可以同时运行多个容器,因为 Docker 容器非常轻量级。2018 年的一项分析指出,Docker 的典型用例涉及每个主机运行八个容器。此外,它还可以安装在单板计算机上,如树莓派。

  • 通常,Linux 内核对命名空间的 [NAMESPACES] 支持会隔离应用程序的操作系统环境视图,例如挂载的文件系统、用户 ID、网络和进程树,而内核的 cgroups 则为 CPU 和内存提供资源限制。
  • 自 0.9 版本以来,Docker 包含其组件(称为“libcontainer”),以利用 Linux 内核直接提供的虚拟化功能,此外还通过 systemd-nspawn、LXD 和 libvirt 应用了抽象虚拟化接口。
  • Docker 运行一个高级 API,提供轻量级的容器,这些容器将进程隔离运行。

什么是 Docker 平台?

Docker 能够将应用程序打包并在一个松散隔离的环境(称为容器)中运行。这种隔离和安全性允许我们在指定的宿主机上同时运行多个容器。容器是轻量级的,包含了运行应用程序所需的一切,因此我们不需要依赖宿主机上当前安装的内容。我们可以轻松地分发容器,并确保我们与之分发的每个人都能获得运行方式相同的容器。

Docker 提供了一个平台和工具设施来维护我们容器的生命周期

  • 容器成为分发和测试我们应用程序的单元。
  • 使用容器开发我们的应用程序及其支持元素。
  • 当一切就绪时,将我们的应用程序作为编排服务或容器部署到我们的生产环境中。无论我们的生产环境是云提供商、本地数据中心还是两者的组合,它的工作方式都相同。

Docker 的许可模式

Dockerfile 文件基于开源许可证。重要的是要理解,此许可证声明的范围仅限于 Dockerfile,而不包括容器镜像。Docker Engine 运行在 Apache License 2.0 版本上。Docker Desktop 共享一些基于 GNU General Public License 的组件。

组成部分

作为一项服务,Docker 软件的提供由三个不同的组件组成,这些组件列出并在下面讨论

  • 软件: Docker 守护进程(称为 dockerd)是一个后台进程,它处理 Docker 容器并管理容器对象。此守护进程接受通过 Docker Engine API 发送的请求。另一个 Docker 客户端程序,称为 docker,提供了一个命令行界面 (CLI),允许用户与 Docker 守护进程进行交互。
  • 注册表: 对于 Docker 镜像,Docker 注册表可以被描述为一个存储库。Docker 客户端与注册表关联,以下载(pull)镜像供使用,并上传(push)他们创建的镜像。注册表可以是私有的或公共的。Docker Hub 是主要的公共注册表。默认注册表是 Docker Hub,Docker 在其中查找镜像。此外,Docker 注册表允许基于事件创建通知。
  • 对象: Docker 对象是用于在 Docker 中组装应用程序的几个实体。主要的 Docker 对象类是服务、容器和镜像。
    • Docker 容器是一个封装的、标准化的运行应用程序的环境。容器通过 Docker CLI 或 API 进行维护。
    • Docker 服务允许将容器扩展到两个或多个 Docker 守护进程。结果称为 swarm,是一组通过 Docker API 进行协调的合作守护进程。
    • Docker 镜像(Image)是用于创建容器的模板(只读)。这些镜像用于存储和分发应用程序。

工具

  • Docker Swarm 提供了一个原生的 Docker 容器集群功能,将一组 Docker 引擎转换为一个虚拟的 Docker 引擎。在 Docker 的 1.12 及更高版本中,Swarm 模式已集成到 Docker Engine 中。
  • Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序的服务,并通过一个命令实现每个容器的构建和启动过程。
    该实用程序,即docker-compose CLI,允许用户同时在两个或多个容器上执行命令,例如扩展容器、构建镜像、运行容器等等。Docker Compose 的初始公共 Beta 版本于 2013 年 12 月 21 日发布,第一个生产就绪版本于 2014 年 10 月 16 日可用。
  • Docker Volume 提供独立的数据持久性,允许数据在容器被重新创建或删除后仍然可用。

Docker 的历史

Docker Inc. 由 Sebastian Pahl、Solomon Hykes 和 Kamel Founadi 在 2010 年 Y Combinator Summer 的孵化器小组中创立,并于 2011 年推出。此外,这家初创公司还是 Den 的第一批创始人之一。在法国,Hykes 在 PaaS 公司 dotCloud 中发起了 Docker 项目作为一个内部项目。Docker 于 2013 年在 Santa Clara 的 PyCon 上公开发布。2013 年 3 月,它被开源。

它当时使用 LXD 作为默认运行环境。一年后,随着 0.9 版本的发布,Docker 用其组件 libcontainer 替换了 LXD,libcontainer 是用 Go 语言编写的。Docker 于 2017 年创建了 Moby 项目,用于开放开发和研究。

采用情况

  • 2013年9月19日: Docker 和 Red Hat 宣布在 OpenShift、RHEL(Red Hat Enterprise Linux)和 Fedora 之间进行合作。
  • 2014年10月15日: Microsoft 宣布将 Docker 引擎集成到 Windows Server 中,并在 Windows 中提供原生 Docker 客户端支持。
  • 2014年11月10日: Docker 宣布与 Stratoscale 建立合作关系。
  • 2014年11月: Docker 容器服务已为 Amazon EC2(Elastic Compute Cloud)推出。
  • 2014年12月4日: IBM 宣布与 Docker 建立战略合作伙伴关系,使 Docker 能够与 IBM Cloud 更紧密地集成。
  • 2015年6月22日: Docker 和其他几家公司宣布他们正在开发一种独立于操作系统的标准,以及一种新的软件容器供应商。
  • 2015年12月: Oracle Cloud 在收购了 Docker 容器初创公司 StackEngine 后,增加了对 Docker 容器的支持。
  • 2016年4月: 独立软件供应商 Windocks 发布了一个开源项目,将 Docker 移植到 Windows,支持 Windows Server 2016 和 Server 2012 R2,以及所有 SQL Server 2008 及更高版本。
  • 2016年5月: 分析显示,以下组织是 Docker 的主要贡献者:Red Hat、Microsoft、IBM、Huawei、Google、Cisco 和 Docker 团队。
  • 2016年6月8日: Microsoft 宣布 Docker 可以原生用于 Windows 10。
  • 2017年1月: 2016 年,一项 LinkedIn 个人资料分析显示,Docker 的存在增长了 160%。
  • 2019年5月6日: Microsoft 推出了 WSL(Windows Subsystem for Linux)的第二个版本。Docker Inc. 宣布它已为 Windows 开发了 Docker 版本,该版本可以在 WSL 2 上运行。特别是,这意味着 Docker 可以在 Windows 10 Home 上运行。
  • 2020年8月: Microsoft 为 Windows 10 1903 和 1909 版本推出了 WSL2 的向后移植,Docker 开发人员宣布这些平台可以提供 Docker。
  • 2021年8月: Docker Desktop for MacOS 和 Windows 不再对企业用户免费。Docker 结束了对大型企业用户免费使用 Docker Desktop 的服务,并用 Personal 计划取代了其免费服务。在 Linux 发行版上,Docker 保持不变。

容器的工作原理

容器的实现得益于 Linux 内核中内置的虚拟化功能和进程隔离。这些功能,包括命名空间(用于限制进程对系统其他区域或资源的可见性或访问)和 Cgroups(控制组)(用于在进程之间分配资源),使得两个或多个应用程序组件能够共享一个宿主机操作系统的实例的资源,这与任何虚拟机管理程序允许多个 VM 共享一台硬件服务器的内存、CPU 和其他资源的方式非常相似。

容器技术提供了虚拟机的所有好处和功能,例如应用程序的可处置性、成本效益高的可扩展性和隔离性,以及其他重要的好处

  • 轻量级: 与 VM 不同,容器不包含整个虚拟机管理程序和操作系统实例的负载。它们只包含运行代码所需的操作系统依赖项和进程。容器的大小以兆字节为单位,提高了硬件容量利用率,并具有快速的启动时间。
  • 更高的资源效率: 开发人员可以使用容器在相同的硬件上运行比使用虚拟机多得多的应用程序副本。这可以降低云支出。
  • 提升开发者生产力: 借助此功能,容器化应用程序可以编写一次,随处运行。与 VM 相比,容器部署、配置和重新启动更快更容易。这使其非常适合在 CD/CI(持续交付和持续集成)管道中使用,并且是支持 DevOps 和敏捷实践的开发团队的绝佳选择。

公司报告了使用容器的其他好处,例如对市场变化的更快响应、提高的应用程序质量等等。

Docker 的用途

  • 快速交付应用程序

Docker 通过允许开发人员在标准化环境中与本地容器一起工作来优化开发生命周期,这些容器为我们的服务和应用程序提供支持。容器非常适合持续交付和持续集成工作流。

  • 响应迅速的扩展和部署

Docker 的基于容器的平台允许高度紧凑的工作负载。容器可以在本地笔记本电脑、云提供商、数据中心中的虚拟机或物理机,或开发人员环境的组合中运行。

Docker 的轻量级和可移植性也使得动态维护工作负载以及根据业务需求缩放和拆除服务和应用程序更加容易。

  • 在同一硬件上运行多个工作负载

Docker 快速且轻量级。它为基于虚拟机的虚拟机提供了一种经济高效且可行的替代方案,因此我们可以利用更多的服务器容量来实现我们的业务目标。Docker 非常适合高密度平台以及需要用更少资源做更多事情的中小型部署。

前提条件

Docker 需要两个重要的安装要求

  • 它仅适用于 64 位 Linux 安装。
  • 它需要 Linux 内核版本 3.10 或更高版本。

要检查您当前的内核版本,请打开终端并输入uname -r命令显示您的内核版本

命令


Docker Installation 1

更新 apt 源

请遵循以下说明更新 apt 源。

1. 打开终端窗口。

2. 使用sudo命令以root用户身份登录。

3. 更新软件包信息并安装 CA 证书。

命令

请参见下面的截图。

Docker Installation 2

4. 添加新的 GPG 密钥。以下命令将下载密钥。

命令

屏幕截图如下。

Docker Installation 3

5. 运行以下命令,它将替换您操作系统在文件中的条目。

请参见下面的截图。

Docker Installation 4

6. 打开文件 /etc/apt/sources.list.d/docker.list 并将以下行粘贴到文件中。


Docker Installation 5

7. 现在再次更新您的 apt 包索引。


Docker Installation 6

请参见下面的截图。

8. 验证 APT 是否正在从正确的存储库拉取。

请参见下面的截图。

Docker Installation 7

9. 安装推荐的软件包。


Docker Installation 8

安装最新的 Docker 版本。

1. 更新您的 apt 包索引。

请参见下面的截图。

Docker Installation 9

2. 安装 docker-engine。

请参见下面的截图。

Docker Installation 10

3. 启动 docker 守护进程。

请参见下面的截图。

Docker Installation 11

4. 通过运行 hello-world 镜像来验证 Docker 是否已正确安装。

请参见下面的截图。

Docker Installation 12

上面的命令下载了一个测试镜像并在容器中运行它。当容器运行时,它会打印一条消息然后退出。