Docker 初学者教程:基础知识, Archi建筑,容器
⚡ 智能摘要
Docker 是一个容器化平台,它将应用程序及其依赖项打包到可移植、轻量级的容器中。本概述解释了 Docker 架构、安装等内容。 Ubuntu基本命令,以及容器与传统虚拟机在加快软件交付速度方面的区别。

Docker是现代容器化技术中最流行的平台之一。 DevOps的 以及云工作流。这篇面向初学者的 Docker 教程解释了 Docker 是什么、Docker 架构的工作原理以及如何在云端安装 Docker。 Ubuntu以及用于管理镜像和容器的基本命令。
什么是Docker?
Docker Docker 是一个用于虚拟化的软件开发平台,它允许多个操作系统在同一主机上运行。它帮助您将基础架构与应用程序分离,从而快速交付软件。与用于创建虚拟机 (VM) 的虚拟机管理程序不同,Docker 使用称为 Docker 容器的单元在系统级别执行虚拟化。
如下图所示,Docker 容器运行在宿主机操作系统之上。这提高了效率和安全性。此外,由于容器占用资源更少,因此您可以在相同的基础设施上运行比虚拟机更多的容器。

与可以直接与主机硬件(例如,创建更多虚拟适配器的以太网适配器)通信的虚拟机不同,Docker 容器运行在主机操作系统之上的隔离环境中。即使您的主机运行 Windows,您可以运行 Linux 借助以下方式将图像放入容器中 Hyper-V它会自动创建一个小型虚拟机来虚拟化基础镜像。
现在您已经了解了 Docker 是什么,让我们来看看团队选择它的主要原因。
为什么要使用 Docker?
以下是使用 Docker 的主要原因:
- Docker 是一种用于虚拟化的软件,它允许多个虚拟机运行在同一个容器中。 操作系统 在同一主机上运行。
- Docker 是一种客户端-服务器应用程序,这意味着客户端与服务器进行通信。
- Docker 镜像充当容器的“源代码”;您可以使用它们来构建容器。
- Docker 支持两种类型的注册表:公共注册表和私有注册表。
- 容器是 Docker 的组织单元。简单来说,镜像是一个模板,容器是该模板的副本,因此你可以从同一个镜像运行多个容器。
这些优势源于 Docker 的设计方式。以下部分将详细介绍 Docker 架构及其核心组件。
Docker Archi质地
现在,在本 Docker 容器教程中,让我们来看看 Docker 架构的主要组成部分。
Docker引擎
Docker 是一种客户端-服务器架构的应用程序,这意味着客户端会向服务器转发请求。Docker 守护进程(名为 dockerd)是 Docker 引擎,代表服务器。守护进程和客户端可以运行在同一主机上,也可以运行在远程主机上,它们通过命令行客户端二进制文件和完整的 Docker 服务进行通信。 RESTful API 与 dockerd 交互。
泊坞窗图像
Docker 镜像就像容器的“源代码”,我们用它们来构建容器。镜像可以预装软件,从而加快部署速度。它们具有可移植性,你可以使用现有的镜像,也可以构建自己的镜像。
Docker 注册表
Docker 将我们构建的镜像存储在镜像仓库中。镜像仓库分为公共仓库和私有仓库。Docker 有一个公共镜像仓库,名为 Docker中心你也可以将镜像私密地存储在 Docker Hub 上。Docker Hub 拥有数百万个镜像,你可以立即开始使用。
Docker容器
容器是 Docker 的组织单元,也是其基本概念之一。当我们构建并运行镜像时,实际上是在容器内运行它。之所以使用容器的比喻,是因为运行在其中的软件具有可移植性:你可以像货船处理真正的集装箱一样,移动、运输、修改、管理、创建或销毁它。
简单来说,镜像是模板,容器是模板的副本。您可以拥有同一镜像的多个容器(副本)。
这些不同组件之间的交互展示了 Docker 容器技术是如何协同工作的。诸如 docker pull 和 docker run 之类的命令(我们稍后会介绍)可以帮助您管理此工作流程。
考虑到架构,让我们安装 Docker,以便您可以亲自尝试这些组件。
如何在 Linux 上安装 Docker/Ubuntu
以下是在 Linux 系统上逐步安装 Docker 的过程/Ubuntu:
步骤1) 要安装 Docker,您需要 Docker 团队提供的 DEB 软件包。首先,需要一些先决条件。 Ubuntu 需要安装某些软件包。请使用以下命令进行安装。
$ sudo apt-get install \ apt-transport-https \ ca-certificates curl \ software-properties-common
*“\” 符号不是必需的,它用于换行,如果愿意,您可以在一行中编写不使用“\”的命令。
步骤2) 添加带有指纹的官方 Docker GPG 密钥。使用以下 Docker 命令输入 GPG 密钥。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
步骤3) 接下来,使用以下命令添加 Docker APT 存储库。
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
系统可能会提示您确认是否要添加存储库并将 GPG 密钥自动添加到您的主机。lsb_release 命令应该会填充以下内容: Ubuntu 您的主机的发行版本。
步骤4) 添加 GPG 密钥后,使用以下 Docker 命令更新 APT 源。
$ sudo apt-get update
现在您可以安装 Docker 软件包本身了。
步骤5) APT 源更新完成后,即可开始安装 Docker 软件包。 Ubuntu 使用以下 Docker 命令。
$ sudo apt-get install docker-ce
上述命令会安装 Docker 和其他必需的软件包。在 Docker 1.8.0 之前,软件包名称为 lxc-docker;在 Docker 1.8 到 1.13 之间,软件包名称为 docker-engine。
注意: Docker for Windows 过程需要在牛奶或乳清产品在管式降膜蒸发器中浓缩至约XNUMX%固体含量之前,进行初始的热处理和巴氏杀菌步骤。 Windows 10 Pro 或 Enterprise 版本 14393,或 Windows 运行 Server 2016 RTM。
如何使用基本 Docker 命令来使用 Docker
以下是如何使用 Docker 的一些基本命令。
如前所述,安装 Docker 后最基本的命令是 docker info。
$ sudo docker info
你应该会得到类似以下的结果。
如上面的 Docker 示例所示,我们可以看到有关 Docker 容器的信息:有多少容器正在运行、暂停或停止,以及已下载了多少镜像。现在让我们获取第一个镜像。
$ sudo docker pull alpine
通过此命令,我们告诉 Docker 下载 alpine 镜像,从公共注册表中拉取最新版本(默认情况下已设置)。
*alpine 是一个基于 Alpine Linux 的最小 Docker 镜像,具有完整的软件包索引,大小仅为 5 MB。
如果要将镜像作为容器运行,可以使用以下命令。
$ sudo docker run -i -t alpine /bin/bash
运行该命令会直接进入 Alpine 终端。`-i` 标志会保持容器内的标准输入 (STDIN) 开放,即使您未连接到该容器;这种持久的标准输入是实现交互式 shell 的一半要素。`-t` 标志是另一半要素,它指示 Docker 为容器分配一个伪终端 (pseudo-tty)。两者结合,我们就可以在新容器中获得交互式 shell。我们使用简单的 `exit` 命令退出容器。
现在,在本 Docker 基础教程中,我们可以尝试运行一个 Ubuntu 图片。
$ sudo docker run -it ubuntu /bin/bash
请注意,Docker 会先检查本地是否存在镜像,如果不存在,则会自动从镜像库拉取镜像。现在,我们又可以运行交互式 shell 了。我们还可以在运行容器时为其命名。
$ sudo docker run –-name our_container -it ubuntu /bin/bash
然后我们再次退出。我们也可以运行之前创建的容器,而无需交互式 shell。
$ sudo docker start container_name
我们通过输入 docker stop container_name 来停止容器。
$ sudo docker stop container_name
如果我们想查看所有正在运行的容器,只需运行以下命令。
$ docker ps
对于所有容器,我们在同一命令的末尾添加“-a”,例如 docker ps -a。该命令显示容器 ID、它使用的镜像、创建时间、运行状态、暴露的端口以及一个随机生成的名称,以便于管理。
运行容器时,我们经常需要知道它们正在使用多少资源。为此,我们可以使用以下命令。
$ docker stats
您还可以查看已下载到本地的图片及其相关信息。
$ sudo docker images
上面 Docker 示例中的命令会显示每个 Docker 镜像,并带有显示镜像版本、唯一镜像 ID、创建日期和镜像大小的标签。
要了解容器为何是一项如此巨大的改进,了解虚拟化的发展历程会有所帮助。
什么是虚拟化?
以前,部署服务既缓慢又麻烦。开发人员编写代码,然后运维团队将其部署到裸机上,他们必须密切关注库版本、补丁和语言编译器,以确保代码能够正常运行。如果出现错误或漏洞,整个流程就得重新开始:开发人员修复问题,运维团队再重新部署。
随着虚拟机管理程序的出现,情况有所改善。虚拟机管理程序可以运行多个虚拟机。 虚拟机或者,也可以在同一主机上运行多个虚拟机,这些虚拟机可能正在运行,也可能处于关闭状态。虚拟机大大缩短了部署代码和修复 bug 的等待时间,但真正改变游戏规则的是 Docker 容器。
Docker 的流行也得益于能够大规模管理容器的编排工具,例如: Kubernetes在继续之前,这里快速列出一些最重要的 Docker 命令。
重要的 Docker 命令
以下是重要的 Docker 命令:
| 命令 | 描述 |
|---|---|
| 码头工人信息 | 信息司令部 |
| 码头工人拉 | 下载图片 |
| docker run -i -t 镜像名称/bin/bash | 将镜像作为容器运行 |
| docker 启动我们的容器 | 启动容器 |
| docker stop 容器名称 | 停止容器 |
| 码头工人 | 所有正在运行的容器列表 |
| 码头工人统计 | 容器信息 |
| 码头图片 | 下载的图像列表 |
| Docker 清理 | 终止所有正在运行的容器。 |
另外,请阅读这些内容。 Docker 工作面试问题及答案 适合应届毕业生和经验丰富的专业人士。

