Docker

本條目存在以下問題，請協助改善本條目或在討論頁針對議題發表看法。

此條目需要編修，以確保文法、用詞、语气、格式、標點等使用恰当。 (2022年1月12日)
請按照校對指引，幫助编辑這個條目。（幫助、討論）

|

此條目翻譯品質不佳。 (2022年1月13日)
翻譯者可能不熟悉中文或原文語言，也可能使用了機器翻譯。請協助翻譯本條目或重新編寫，并注意避免翻译腔的问题。明顯拙劣的翻譯請改掛`{{d|G13}}`提交刪除。

|

Docker

原作者| Solomon Hykes
開發者| Docker, Inc.
首次发布| 2013年3月13日 (2013-03-13)
当前版本|

* 28.3.3（2025年7月28日；穩定版本）[1]

源代码库|

* github.com/moby/moby

编程语言| Go
操作系统| Linux、Windows、macOS
平台| x86-64、ARM、s390x、ppc64le
类型| 作業系統層虛擬化
许可协议| 可執行檔：免費增值软件即服务
原始碼：Apache许可证 2.0
网站| www.docker.com

Docker是一个開放原始碼的開放平臺軟體，用于开发应用、交付（shipping）应用和运行应用。Docker允许用户将基础设施（Infrastructure）中的应用单独分割出来，形成更小的颗粒（容器），从而提高交付软件的速度。[2]

Docker容器与虚拟机类似，但二者在原理上不同。容器是将操作系统层虚拟化，虚拟机则是虚拟化硬件，因此容器更具有便携性、更能高效地利用服务器。 容器更多的用于表示软件的一个标准化单元。由于容器的标准化，因此它可以无视基础设施（Infrastructure）的差异，部署到任何一个地方。另外，Docker也为容器提供更强的业界的隔离兼容。[3]

Docker 利用Linux核心中的資源分離機制，例如cgroups，以及Linux核心命名空間（英语：Linux namespaces）（namespaces），來建立獨立的容器（containers）。這可以在單一Linux實體下運作，避免啟動一個虛擬機器造成的額外負擔[4]。Linux核心對命名空間的支援完全隔離了工作環境中應用程式的視野，包括行程樹、網路、用户ID與掛載檔案系統，而核心的cgroup提供资源隔離，包括CPU、記憶體、block I/O與網路。從0.9版本起，Dockers在使用抽象虛擬是經由libvirt的LXC與systemd - nspawn提供界面的基礎上，開始包括libcontainer函式庫做為以自己的方式開始直接使用由Linux核心提供的虛擬化的設施。[4]

## 基础架构

[编辑]

专业名词Docker有两个意思：[5]

* 代指整个Docker项目。
* 代指Docker引擎。

### Docker引擎

[编辑]

Docker引擎（Docker Engine）是一个服务端-客户端结构的应用，主要有这些部分：Docker守护进程、Docker Engine API（页面存档备份，存于互联网档案馆）、Docker客户端。[6]

* Docker守护进程（Docker daemons），也叫 `dockerd` ，是一个持久化的进程，用户管理容器。守护进程会监听Docker Engine API（页面存档备份，存于互联网档案馆） 的请求。[7]
* Docker Engine API（页面存档备份，存于互联网档案馆）是用于与Docker守护进程交互用的的API。它是一个RESTful API，因此它不仅可以被Docker客户端调用，也可以被`wget` 和 `curl`等命令调用。[8]
* Docker客户端，也叫`docker`，是大部分用户与Docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循Docker Engine API （页面存档备份，存于互联网档案馆） （页面存档备份，存于互联网档案馆）（页面存档备份，存于互联网档案馆）[7]

### Docker注册中心

[编辑]

Docker注册中心（Docker registry）是用于存储Docker的镜像。Docker Hub 是一个公共的注册中心，任何人都可以使用，默认配置下，Docker将会在这里寻找镜像。[6]

另外，用户可以自行构建私有注册中心。Docker Datacenter（DDC）的用户，可以直接使用 Docker Trusted Registry（DTR）。[6]

2023年5月，在中国大陆地区被防火长城阻断屏蔽[9]，同年9月恢复访问[10]。

### 对象

[编辑]

Docker的对象是指Images、Containers、Networks、Volumes、Plugins等等。[6]

* 容器（Containers）是镜像的可运行的实例。容器可通过API或CLI（命令行）进行操控。[6]
* 镜像（Images）是一个只读模板，用于指示创建容器。[6]镜像分层（layers）构建的，而定义这些层次的文件叫Dockerfile。[11]
* 服务（Services）允许使用者跨越不同的Docker守护进程（Docker daemons）的情况下增加容器，并将这些容器分为管理者（managers）和工作者（workers），让他们为swarm共同工作。[6]

## 扩展架构

[编辑]

### Docker Compose

[编辑]

Compose可译为组合物。[12]Compose 是用于定义和运行 多个容器Docker应用程序 的工具。通过Compose，你可以使用YAML文件来配置应用程序需要的所有服务，然后通过使用一个命令，就可以创建并启动所有服务。[13][14]Compose对应的命令为`docker-compose`。[15]

### Docker Desktop

[编辑]

Docker Desktop 是适用于Windows、Linux、MacOS操作系统的一键式安装程序，提供了图形用户界面，便于管理Docker的容器、镜像以及应用等对象。Docker Desktop包含了：Docker Engine、CLI、构建以及扩展等组件。[16]

### Swarm Mode

[编辑]

当说到 Docker Swarm 时，一般是指单独项目 Docker Swarm。而在Docker 1.12时，将swarm mode集成到Docker 引擎中，可用Docker引擎API 和 CLI 命令直接使用。官方推荐用户使用集成的 swarm mode [17]。

Swarm Mode 内置 kv 存储功能，提供了众多的新特性，比如：具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网格、动态伸缩、滚动更新、安全传输等。使得 Docker 原生的 `Swarm` 集群具备与 Mesos、Kubernetes 竞争的实力。[18]

cluster（中文：集群），Docker将集群定义为：一群共同作业并提供高可用性的机器[5]。swarm（中文：群[19]），是指一个集群的Docker引擎以swarm mode形式运行[5]。swarm mode是指Docker引擎内嵌的集群管理和编排功能。当你初始化了一个swarm(cluster)或者将节点加入一个swarm时，其Docker引擎就会以swarm mode的形式运行。[5]

#### 原理

[编辑]

swarm中的Docker机器中分为 managers（管理者） 和 workers（员工），管理者用于处理集群的关系和委派，员工则用于执行 swarm服务。[20]当你创建swarm服务时，你可以为其增加各种额外的状态（如：数量、网络、端口、存储资源等等）。Docker会去维持用户想要的状态。如：一个工作节点如果挂了，那么Docker会去把这个节点的任务给另外一个节点。此处的任务（task）是指：被swarm管理者管理的一个运行中的容器。[20]

swarm服务比单独容器好在，修改swarm服务的配置之后不用重启。同时，Docker以swarm mode形式运行时，也可以选择直接启动单独的容器。另外，swarm mode下，你也可以通过 `docker stack deploy` 使用 Compose file 部署应用栈。[20][21]swarm服务分为两种，一种是replicated services ，可以指定节点任务的总数量；global services，则是每个节点都会运行一个指定任务。[22]swarm管理员使用 ingress 负载均衡使服务可被外部接触。 swarm管理员会自动地给服务分配PublishedPort（或者手动配置）。外部组件，如云负载均衡器能通过集群中任何节点上的PublishedPort去接入服务（不管该服务是否启动）。另外 swarm mode有内部DNS组件，它会为每个服务分配一个DNS条目。swarm管理员使用 internal load balancing 去分发请求时，就是依靠这个DNS组件。[23]

swarm mode的功能是由swarmkit（一个独立项目）提供的，它实现了Docker的编排层。swarm可以直接被Docker使用。[20]

## 文件格式

[编辑]

Docker有两种文件格式，Dockerfile和Compose file。Dockerfile定义了单个容器的内容和启动时候的行为。Compose file定义了一个多容器应用。[24]

### Dockerfile

[编辑]

Docker 可以依照 Dockerfile 的内容，自动化地构建镜像。 Dockerfile 是包含着用户想要如何构建镜像的所有命令的文本。[25]

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

关键词：

* `RUN`。`RUN`会在当前镜像的顶层上添加新的一层(layer)，并在该层上执行命令，执行结果将会被提交。提交后的结果将会用于`Dockerfile`的下一步。[26]
* `ENTRYPOINT`，入口点。`ENTRYPOINT`允许你配置容器，使之成为可执行程序。[27]即，`ENTRYPOINT`允许你为容器增加一个入口点。`ENTRYPOINT`和`CMD`类似，均在容器启动时执行，但是`ENTRYPOINT`为了提供稳定且不可被覆盖的操作。[28]通过在命令行中指定`--entrypoint 命令`的方式，可在运行时将Dockerfile文件中的`ENTRYPOINT`覆盖。
* `CMD`，是command的缩写。`CMD`用于为已创建的镜像提供默认的操作，当不想要用默认操作时候，可用`docker run IMAGE[:TAG|@DIGEST] [COMMAND]` 进行替换 。但当Dockerfile拥有入口点时，`CMD`用于赋予入口点参数。[29]

### Compose文件

[编辑]

Compose文件 是一个YAML文件，定义了服务（service）、网络、卷（volume）。

* 服务（service）定义各容器的配置，定义内容将以命令行参数的方式 传给 `docker run` 命令。
* 网络（network），类似地，将定义内容传给 `docker network create` 命令 。
* 卷（volume），类似地，将定义内容传给 `docker volume create` 命令。

`docker run` 命令中有一些选项，和 Dockerfile文件中的指令效果一样（如：`CMD`, `EXPOSE`, `VOLUME`, `ENV`），如果Dockerfile文件中使用这些指令，那么这些指令就会被视为默认参数，所以开发者无需特意在 Compose文件中再指定一次。[30]

Compose文件 可使用 Shell变量（Variable），如：[31]

db:
image: "postgres:${POSTGRES_VERSION}"

Compose文件 可通过自身的`ARGS`变量，将参数传给Dockerfile的 `ARGS` 指令。[32]

## 网络

[编辑]

参考文档：Docker文档-网络概要（页面存档备份，存于互联网档案馆）

### bridge

[编辑]

在Docker裡，网桥网络 使用的是 软件形式的网桥。使用相同的网桥的容器连接进入该网络，而非该网络的容器刷故无法接入。Docker网桥驱动会自动地在Docker主机上安装规则，这些规则让不同桥接网络之间不能直接通信。[33]桥接经常用于：在单独容器上运行应用时，可通过 网桥 进行通信。[34]网桥网络 适用于容器运行在相同地Docker守护进程的主机上。不同Docker守护进程主机上的容器，它们之间的通信需要依靠操作系统层次的路由，或者你应该使用 overlay网络 进行代替。[33]

`bridge` 是网桥驱动，是Docker默认的网络驱动（接口名为 `docker0`[35]），当你不为容器指定一个网络时候，Docker将会使用该驱动。[34]可通过 `daemon.json` 文件修改相关配置。[36]

自定义网桥可通过 `brctl` 命令进行配置。[37][38]

### host

[编辑]

主机模式

`host` 用于单独容器，该网络下容器只能和Docker主机进行直接连接。`host` 只适用于 Docker 17.06或以上版本的swarm服务。

host网络和VirtualBox的 仅主机网络（Host-only Networking） 类似。[39]

### overlay

[编辑]

`overlay` （中文：覆盖网络）网络驱动将会创建分布式网络，该网络可以覆盖若干个 Docker守护进程主机。该网络是基于 主机特定网络（host-specific networks），允许 swarm服务 和 容器 进行安全通信（当加密功能开启时）。在该网络下，Docker能够清晰地掌握 数据包的路由 以及 发送接收容器。[40]

`overlay` 有两种网络类型网络：[40]

* `ingress` 网络，可掌控 swarm服务 的网络流量 。该网络是 `overlay` 的默认网络。
* `docker_gwbridge` 网络是 网桥网络。该网络会将 单独的Docker守护进程 连接至 swarm里的另外一个守护进程。

在 `overlay` 网络下，单独的容器 和 swarm服务 的行为和配置概念 是不一样的。[40]

该策略不需要 容器们 具有操作系统级别的路由，因为Docker负责路由。[34]

### macvlan

[编辑]

`Macvlan`网络配置提供了一种机制，允许单独的容器具有独立的MAC地址，使得这些容器在网络上表现得如同物理设备。

### none

[编辑]

该策略下，容器不使用任何网络。`none` 常常用于连接自定义网络驱动的情况下。

### 其他

[编辑]

截止2023年5月18日，Docker官方仓库域名 https://hub.docker.com/ （页面存档备份，存于互联网档案馆） 在中国大陆被屏蔽，方式为DNS污染。随后短暂解封，2024年6月6日再次被封。

## 数据管理

[编辑]

Docker默认下，所有文件将会存储在容器里的可写的容器层（container layer）。[41]

* 数据与容器为一体。随着容器消失，数据将消失；难以与其他程序（容器）共享。可以采用挂载文件的方式解决。
* 由于容器的写入层是与宿主机器紧紧耦合。所以你难以移动数据到其他机器。
* 容器的写入层的是通过 存储驱动（页面存档备份，存于互联网档案馆）（storage driver） 管理文件系统。存储驱动（页面存档备份，存于互联网档案馆） 会使用Linux内核的 链合文件系统（union filesystem）进行挂载。相比起直接操作于宿主机器文件系统的 数据卷，这额外的抽象层将会降低性能。

容器有两种永久化存储方式：卷（volumes）和 绑定挂载（bind mounts）。另外，Linux用户还可使用 tmpfs 进行挂载；Window用户还可以使用 命名管道（named pipe）。在容器中，不管是哪种永久化存储，表现形式都是一样的。[41]

### 卷

[编辑]

卷（volumes）是宿主机器的文件系统的一部分，由Docker进行管理（ 在Linux，存储于`/var/lib/docker/volumes/`）。非Docker程序不应该去修改这些文件。Docker推荐使用 卷 进行持久化数据。 卷 可支持 卷驱动（volume drivers），该驱动允许用户将数据存储到 远程主机 或 云服务商（cloud provider）或 其他。[41]

没有名字的卷叫匿名卷（anonymous volume），有名字的卷叫命名卷（named volume）。匿名卷没有明确的名字，当被初始化时，会被赋予一个随机名字。[41]

### 绑定挂载

[编辑]

绑定挂载（bind mounts）通过将宿主机器的路径挂载到容器里的这种方式，从而数据持续化，因此绑定挂载可将数据存储在宿主机器的文件系统的任何地方。非Docker程序可修改这些文件。 绑定挂载是Docker早期就存在的，相比起卷，绑定挂载十分简单明了。[41]在开发Docker应用时，应使用命名卷（named volume）代替绑定挂载，因为用户不能对绑定挂载进行 Docker CLI 命令操作。[41]

绑定挂载常用于：[42]

* 同步配置文件，如： 将 宿主主机的DNS配置文件（`/etc/resolv.conf`）同步至容器中
* 在开发程序时，将 源代码 或 Artifact 同步至容器中。[42]这种用法与 Vagrant 类似。

### tmpfs

[编辑]

`tmpfs` 挂载（tmpfs mounts），仅仅存储于内存中，并不操作 宿主机器的文件系统（不持久化于磁盘）。它可用于存储一些 非持久化状态、敏感数据。 举例，swarm服务 通过`tmpfs` 将 secrets（页面存档备份，存于互联网档案馆）（密码、密钥、证书等）存储到swarm服务。 [41]

### 命名管道

[编辑]

命名管道（named pipes），通过 `npipe` 挂载的形式，使 Docker主机 和 容器 之间能互相通讯。常见用例是在容器内运行第三方工具，并使用命名管道连接到Docker Engine API。[41][43]

### 覆盖问题

[编辑]

当挂载 空的卷 至一个目录中，目录中的内容会被复制于卷中（不会覆盖）。如果挂载 非空的卷 或 绑定挂载 至一个目录中，那么该目录的内容将会被隐藏（obscured ），当卸载后内容将会恢复显示。[44]

## 日志

[编辑]

在UNIX和类Unix系统中，常见的 I/O流（英語：I/O streams） 分为三种：`STDIN`（输入 ）、 `STDOUT`（正常输出）、`STDERR`（错误输出）。[45]

默认配置下，Docker的日志（如：`docker logs`、`docker service log`）所记载的是命令行的输出结果（`STDOUT`和`STDERR`）。而`STDOUT` 和 `STDERR` 对应的文件路径分别是 `/dev/stderr`和`/dev/stdout`。[45]另外，也可以在宿主主机上查看容器的日志，使用以下命令可以查看到容器的日志位置。[46]

$ docker inspect --format='{{.LogPath}}' $INSTANCE_ID

## Kubernetes in docker

[编辑]

kind（全称：Kubernetes IN Docker）是部署本地Kubernetes集群的工具，而集群的节点是由Docker生成的。[47]

## 操作细节

[编辑]

在安装完kind之后，通过`kind create cluster`命令生成集群。[47]生成Kubernetes集群后，可以通过Docker命令进行查看节点概览：

$ docker container ls

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                       NAMES

99c96c1f21ab        kindest/node:v1.17.0   "/usr/local/bin/entr…"   4 minutes ago       Up 4 minutes        127.0.0.1:32769->6443/tcp   kind-control-plane

## 历史

[编辑]

Docker命令在过去的发展中诞生了40种以上的命令，过多的命令导致混乱以及难以使用tab自动补充，因此在docker 1.13版本（2017.1.19）中，命令行被重构，根据逻辑对象进行划分。官方建议用户使用新的语法进行操作。[48]

## 已过时

[编辑]

### Docker Swarm

[编辑]

参考Swarm Mode章节。

### Docker Machine

[编辑]

Docker Machine 是一个工具，它允许你在虚拟宿主机上安装 Docker引擎，并使用 docker-machine 命令管理这些宿主机。你可以使用 Machine 在你本地的 Mac 或 Windows box、公司网络、数据中心、或像 AWS 或 Digital Ocean 这样的云提供商上创建 Docker 宿主机。[49][50]

Docker Machine 最后更新时间是在0.16.0 (2018-11-08)版本[51]。官方建议在1.12以及之后版本使用Docker Desktop for Mac和Docker Desktop for Windows进行代替。[49]

### Docker Toolbox

[编辑]

Docker Toolbox是用于帮 Windows系统和Mac系统 安装Docker环境。新版本建议使用Docker Desktop for Mac和Docker Desktop for Windows进行安装。[52]最后更新版本是 19.03.1(2019-08-01)。[53]

## 安全性爭議

[编辑]

2021年，安全公司Palo Alto Networks研究人員Aviv Sasson，在Docker Hub上發現的惡意容器映像存檔，分別來自10個不同帳號，總下載次數超過2000萬次，其中內含的挖礦軟體。[54]

## 参考文献

[编辑]

1. ^ v28.3.3. 2025年7月28日  [2025年7月29日].
2. ^ Get Docker. Docker Documentation. 2020-03-20  [2020-03-22]. （原始内容存档于2020-03-22） （英语）.
3. ^ What is a Container? | App Containerization | Docker. www.docker.com.  [2020-03-22]. （原始内容存档于2018-08-06） （英语）.
4. ^ 4.0 4.1 Docker Documentation. docker.readthedocs.org. 2014-01-04  [2014-08-20]. （原始内容存档于2014-08-21）.
5. ^ 5.0 5.1 5.2 5.3 Glossary. Docker Documentation. 2020-02-25  [2020-02-29]. （原始内容存档于2019-12-28） （英语）.
6. ^ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 Docker overview. Docker Documentation. 2020-02-14  [2020-02-16]. （原始内容存档于2020-01-06） （英语）.
7. ^ 7.0 7.1 dockerd. Docker Documentation. 2020-02-14  [2020-02-16]. （原始内容存档于2020-02-18） （英语）.
8. ^ Develop with Docker Engine SDKs and API. Docker Documentation. 2020-02-14  [2020-02-16]. （原始内容存档于2020-02-18） （英语）.
9. ^ 恶意利用 hub.docker.com 上传涉及政治的项目，导致被墙. v2ex.  [2023-07-07]. （原始内容存档于2023-07-08）.
10. ^ 存档副本.  [2024-09-13]. （原始内容存档于2024-09-22）.
11. ^ About storage drivers. Docker Documentation. 2020-02-14  [2020-02-16]. （原始内容存档于2020-02-18） （英语）.
12. ^ What is the noun for compose?. WordHippo.  [2020-02-16]. （原始内容存档于2020-02-16） （英语）.
13. ^ Docker Compose | 菜鸟教程. www.runoob.com.  [2020-02-16]. （原始内容存档于2020-02-16）.
14. ^ Overview of Docker Compose. Docker Documentation. 2020-02-14  [2020-02-16]. （原始内容存档于2020-02-18） （英语）.
15. ^ Compose command-line reference. Docker Documentation. 2020-02-14  [2020-02-16]. （原始内容存档于2020-04-01） （英语）.
16. ^ Docker Desktop. Docker Documentation. 2024-11-26  [2025-03-18] （英语）.
17. ^ Docker Swarm overview. Docker Documentation. 2020-02-25  [2020-02-29]. （原始内容存档于2020-04-23） （英语）.
18. ^ Swarm mode · Docker —— 从入门到实践. yeasy.gitbooks.io.  [2020-03-05]. （原始内容存档于2020-03-20）.
19. ^ swarm漢語(繁體)翻譯：劍橋詞典. dictionary.cambridge.org.  [2020-02-24]. （原始内容存档于2020-04-23） （中文（繁體））.
20. ^ 20.0 20.1 20.2 20.3 Swarm mode key concepts. Docker Documentation. 2020-02-20  [2020-02-24]. （原始内容存档于2020-02-24） （英语）.
21. ^ Deploy a stack to a swarm. Docker Documentation. 2020-02-25  [2020-02-29]. （原始内容存档于2020-02-29） （英语）.
22. ^ services-and-tasks. Docker Documentation. 2020-02-25  [2020-02-29]. （原始内容存档于2020-02-24） （英语）.
23. ^ load-balancing. Docker Documentation. 2020-02-25  [2020-02-29]. （原始内容存档于2020-02-24） （英语）.
24. ^ Reference documentation. Docker Documentation. 2020-02-14  [2020-02-17]. （原始内容存档于2020-02-17） （英语）.
25. ^ dockerfile-reference. （原始内容存档于2020-02-18）.
26. ^ run.  [2020-02-18]. （原始内容存档于2020-02-18）.
27. ^ entrypoint.  [2020-02-27]. （原始内容存档于2020-02-21）.
28. ^ entrypoint-default-command-to-execute-at-runtime. （原始内容存档于2020-02-02）.
29. ^ cmd-default-command-or-options. （原始内容存档于2020-02-02）.
30. ^ service-configuration-reference.  [2020-02-19]. （原始内容存档于2020-02-16）.
31. ^ variable-substitution. （原始内容存档于2020-02-16）.
32. ^ args. Docker Documentation. 2020-04-09  [2020-04-13]. （原始内容存档于2020-04-11） （英语）.
33. ^ 33.0 33.1 Use bridge networks. Docker Documentation. 2020-03-19  [2020-03-20]. （原始内容存档于2020-02-23） （英语）.
34. ^ 34.0 34.1 34.2 network-drivers 章节的. Docker Documentation. 2020-03-19  [2020-03-20]. （原始内容存档于2020-04-15） （英语）.
35. ^ 配置 docker0 网桥 · Docker —— 从入门到实践. yeasy.gitbooks.io.  [2020-03-20]. （原始内容存档于2020-03-20）.
36. ^ Use bridge networks - configure-the-default-bridge-network. Docker Documentation. 2020-03-19  [2020-03-20]. （原始内容存档于2020-02-23） （英语）.
37. ^ BridgeNetworkConnections - Debian Wiki. wiki.debian.org.  [2020-03-20]. （原始内容存档于2020-03-20）.
38. ^ 自定义网桥 · Docker —— 从入门到实践. yeasy.gitbooks.io.  [2020-03-20]. （原始内容存档于2020-03-20）.
39. ^ vbox_host-only_setup. condor.depaul.edu.  [2020-03-09]. （原始内容存档于2019-07-25）.
40. ^ 40.0 40.1 40.2 Use overlay networks. Docker Documentation. 2020-03-19  [2020-03-20]. （原始内容存档于2020-03-20） （英语）.
41. ^ 41.0 41.1 41.2 41.3 41.4 41.5 41.6 41.7 Manage data in Docker. Docker Documentation. 2020-03-20  [2020-03-21]. （原始内容存档于2020-03-16） （英语）.
42. ^ 42.0 42.1 good-use-cases-for-bind-mounts. Docker Documentation. 2020-03-20  [2020-03-21]. （原始内容存档于2020-03-16） （英语）.
43. ^ Docker中的数据管理 - 掘金. juejin.im.  [2020-03-21]. （原始内容存档于2020-03-21）.
44. ^ using-bind-mounts-or-volumes. Docker Documentation. 2020-03-20  [2020-03-21]. （原始内容存档于2020-03-16） （英语）.
45. ^ 45.0 45.1 View logs for a container or service. Docker Documentation. 2020-04-17  [2020-04-17]. （原始内容存档于2020-04-16） （英语）.
46. ^ get-an-instances-log-path. Docker Documentation. 2020-04-17  [2020-04-18]. （原始内容存档于2020-04-15） （英语）.
47. ^ 47.0 47.1 kubernetes-sigs/kind, Kubernetes SIGs, 2020-05-04  [2020-05-04], （原始内容存档于2022-02-11）
48. ^ Introducing Docker 1.13. Docker Blog. 2017-01-19  [2020-03-05]. （原始内容存档于2020-01-09） （美国英语）.
49. ^ 49.0 49.1 Docker Machine Overview. Docker Documentation. 2020-02-25  [2020-03-02]. （原始内容存档于2020-03-02） （英语）.
50. ^ Docker(五)：Docker 三剑客之 Docker Machine. 知乎专栏.  [2020-03-02]. （原始内容存档于2020-03-02） （中文）.
51. ^ Docker Machine release notes. Docker Documentation. 2020-02-25  [2020-03-02]. （原始内容存档于2020-03-02） （英语）.
52. ^ Docker Toolbox overview. Docker Documentation. 2020-02-25  [2020-03-02]. （原始内容存档于2020-04-15） （英语）.
53. ^ docker/toolbox. GitHub.  [2020-03-02]. （原始内容存档于2020-06-11） （英语）.
54. ^ 林妍溱. 下載超過2千萬次的Docker映像檔被爆含有挖礦軟體. ithome. 2021-03-31  [2021-03-31]. （原始内容存档于2021-04-07）.

## 外部連結

[编辑]

* 官方网站
* Source code repository（页面存档备份，存于互联网档案馆）
* Multi-tenancy using Docker（页面存档备份，存于互联网档案馆）
* Docker 101 Tutorial（页面存档备份，存于互联网档案馆）
* libcontainer git repo（页面存档备份，存于互联网档案馆）
* 如何在Linux下安装Docker（页面存档备份，存于互联网档案馆）
* Windows 容器（页面存档备份，存于互联网档案馆） - 在 Windows 10 部署 Docker

## 参见

[编辑]

* Linux主题

* 作業系統層虛擬化
* cgroups
* LXC
* Dotcloud

* 查
* 论
* 编

虛擬化技術

平台虛擬化軟體比較（英语：Comparison of platform virtualization software）

硬體虛擬化
（Hypervisor）|

| 原生虛擬化|

* Adeos（英语：Adaptive Domain Environment for Operating Systems）
* CP/CMS（英语：CP/CMS）
* Hyper-V
* KVM
* Red Hat Enterprise Virtualization（英语：Red Hat Enterprise Virtualization）
* LDoms / Oracle VM Server for SPARC（英语：Oracle VM Server for SPARC）
* LynxSecure（英语：LynxSecure）
* SIMMON（英语：SIMMON）
* VMware ESX（英语：VMware ESX/ESXi）
* VMware vSphere（英语：VMware vSphere）
* VCloud Air
* VMware Infrastructure（英语：VMware Infrastructure）
* Xen
* Oracle VM
* XenClient（英语：XenClient）
* XtratuM（英语：XtratuM）
* z/VM（英语：z/VM）

|

需要宿主作業系統|

| 專用|

* Basilisk II（英语：Basilisk II）
* bhyve（英语：bhyve）
* Bochs
* Cooperative Linux
* DOSBox
* DOSEMU（英语：DOSEMU）
* L4Linux（英语：L4Linux）
* Mac-on-Linux（英语：Mac-on-Linux）
* Mac-on-Mac（英语：Mac-on-Mac）
* PCem（英语：PCem）
* SheepShaver
* SIMH（英语：SIMH）
* Windows on Windows
* DOS虚拟机（英语：Virtual DOS machine）
* Win4Lin（英语：Win4Lin）

|

獨立|

* Microsoft Virtual Server（英语：Microsoft Virtual Server）
* Parallels Workstation（英语：Parallels Workstation）
* Parallels Desktop
* Parallels Server（英语：Parallels Server for Mac）
* PearPC
* QEMU
* VirtualBox
* Virtual Iron（英语：Virtual Iron）
* VMware Fusion
* VMware Workstation Player
* VMware Server
* VMware Workstation
* Windows Virtual PC

工具|

* Ganeti（英语：Ganeti）
* oVirt（英语：oVirt）
* Virtual Machine Manager

作業系統層虛擬化|

* 基於Cgroups
* Container Linux
* lmctfy（英语：lmctfy）
* Linux-VServer（英语：Linux-VServer）
* LXC
* Docker
* OpenVZ
* Virtuozzo（英语：Virtuozzo）
* Podman
* FreeBSD jail
* iCore Virtual Accounts（英语：iCore Virtual Accounts）
* Kubernetes
* Linux namespaces（英语：Linux namespaces）
* Solaris Containers
* Workload Partitions（英语：Workload Partitions）

桌面虛擬化|

* Citrix XenApp（英语：Citrix XenApp）
* 思杰系统
* 遠端桌面
* VMware Horizon
* Ulteo

應用程式虛擬化（英语：Application virtualization）
（沙盒）|

* Ceedo（英语：Ceedo）
* Citrix XenApp（英语：Citrix XenApp）
* Dalvik
* InstallFree（英语：InstallFree）
* 微軟App-V（英语：Microsoft App-V）
* 遠端桌面
* Spoon（英语：Spoon (software)）
* Symantec Workspace Virtualization（英语：Symantec Workspace Virtualization）
* VMware ThinApp（英语：VMware ThinApp）
* ZeroVM（英语：ZeroVM）

网络虚拟化（英语：Network virtualization）|

* DOVE（英语：Distributed Overlay Virtual Ethernet）
* Network Virtualization using Generic Routing Encapsulation‎（英语：Network Virtualization using Generic Routing Encapsulation‎）
* Open vSwitch（英语：Open vSwitch）
* Virtual security switch（英语：Virtual security switch）
* 虛擬局域網擴展 (VXLAN)

參見: 模擬器軟體列表（英语：List of emulators）

* 查
* 论
* 编

Linux容器

作業系統層虛擬化

容器宿主操作系统|

* Linux
* Container Linux
* RancherOS

容器引擎|

* Docker
* rkt

容器集群管理器|

* Apache Mesos
* Kubernetes
* Rancher
* Nomad
* Amazon EC2 Container Service
* Docker UCP
* Docker Swarm
* StackEngine
* Tutum

*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板