非常教程

Docker 17参考手册

引擎 | Engine

Docker容器网络(引擎) | Docker container networking (Engine)

本节概述 Docker 的默认网络行为,包括默认创建的网络类型以及如何创建自己的用户定义网络。它还介绍了在单个主机上或跨主机集群创建网络所需的资源。

有关 Docker 如何与iptables在 linux 主机上,请参见码头工人iptables...

默认网络

当您安装 Docke r时,它会自动创建三个网络。您可以使用以下docker network ls命令列出这些网络:

$ docker network ls

NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                null
cf03ee007fb4        host                host

这三个网络都构建在 Docker 中。当你运行一个容器时,你可以使用该--network标志来指定你的容器应该连接到哪个网络。

bridge网络是指docker0存在于所有的码头工人安装网络。除非您使用该docker run --network=<NETWORK>选项另外指定,否则默认情况下,Docker 守护程序会将容器连接到此网络。通过使用主机上的ifconfig命令,您可以将此桥看作主机网络堆栈的一部分。

$ ifconfig

docker0   Link encap:Ethernet  HWaddr 02:42:47:bc:3a:eb
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:47ff:febc:3aeb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1100 (1.1 KB)  TX bytes:648 (648.0 B)

所述none网络增加了一个容器为特定容器的网络栈。该容器缺少网络接口。附着在这样一个容器上,看着它的堆栈,你会看到:

$ docker attach nonenetcontainer

root@0cb243cd1293:/# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
root@0cb243cd1293:/# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@0cb243cd1293:/#

注意:您可以从容器中分离并使其保持运行状态CTRL-p CTRL-q

host网络增加了主机的网络堆栈上的容器。就网络而言,主机和容器之间没有隔离。例如,如果使用主机网络运行在端口80上运行 Web 服务器的容器,则 Web 服务器在主机的端口80上可用。

这些nonehost网络不能直接在 Docker 中配置。但是,您可以配置默认bridge网络以及您自己的用户定义网桥。

默认网桥

默认bridge网络存在于所有 Docker 主机上。如果您未指定其他网络,则新容器会自动连接到默认bridge网络。

docker network inspect命令返回有关网络的信息:

$ docker network inspect bridge

[
   {
       "Name": "bridge",
       "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
       "Scope": "local",
       "Driver": "bridge",
       "IPAM": {
           "Driver": "default",
           "Config": [
               {
                   "Subnet": "172.17.0.1/16",
                   "Gateway": "172.17.0.1"
               }
           ]
       },
       "Containers": {},
       "Options": {
           "com.docker.network.bridge.default_bridge": "true",
           "com.docker.network.bridge.enable_icc": "true",
           "com.docker.network.bridge.enable_ip_masquerade": "true",
           "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
           "com.docker.network.bridge.name": "docker0",
           "com.docker.network.driver.mtu": "9001"
       },
       "Labels": {}
   }
]

运行以下两个命令来启动两个busybox容器,每个容器都连接到默认bridge网络。

$ docker run -itd --name=container1 busybox

3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c

$ docker run -itd --name=container2 busybox

94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c

bridge启动两个容器后再次检查网络。这两个busybox容器都连接到网络。记下它们的 IP 地址,这与主机上的 IP 地址不同,下面的例子会有所不同。

$ docker network inspect bridge

{[
    {
        "Name": "bridge",
        "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.17.0.1/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Containers": {
            "3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c": {
                "EndpointID": "647c12443e91faf0fd508b6edfe59c30b642abb60dfab890b4bdccee38750bc1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c": {
                "EndpointID": "b047d090f446ac49747d3c37d63e4307be745876db7f0ceef7b311cbba615f48",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "9001"
        },
        "Labels": {}
    }
]

连接到默认bridge网络的容器可以通过 IP 地址相互通信。Docker 不支持在默认网桥上自动发现服务。如果您希望容器能够通过容器名称解析 IP 地址,则应该使用用户定义的网络。您可以使用旧版docker run --link选项将两个容器链接在一起,但在大多数情况下不建议这样做。

您可以attach运行container以查看容器内网络的外观。您连接为root,因此您的命令提示符是一个#字符。

$ docker attach container1

root@0cb243cd1293:/# ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1296 (1.2 KiB)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

从容器内部,使用该ping命令测试到其他容器的 IP 地址的网络连接。

root@0cb243cd1293:/# ping -w3 172.17.0.3

PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.096 ms
64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.080 ms
64 bytes from 172.17.0.3: seq=2 ttl=64 time=0.074 ms

--- 172.17.0.3 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.074/0.083/0.096 ms

使用该cat命令查看/etc/hosts容器上的文件。这显示容器识别的主机名和 IP 地址。

root@0cb243cd1293:/# cat /etc/hosts

172.17.0.2	3386a527aa08
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters

要从container1容器中分离并保持运行,请使用键盘序列 CTRL-p CTRL-q。如果您愿意,请附加container2并重复上述命令。

默认docker0网桥支持使用端口映射并docker run --link允许网络中的容器之间的docker0通信。不建议使用这种方法。在可能的情况下,您应该使用用户定义的网桥。

用户定义的网络

建议使用用户定义的桥接网络来控制哪些容器可以相互通信,还可以启用将容器名称自动 DNS 解析为 IP 地址。Docker 提供用于创建这些网络的默认网络驱动程序。您可以创建新的网桥覆盖网络MACVLAN网络。您还可以创建网络插件远程网络以进行完整的自定义和控制。

您可以根据需要创建尽可能多的网络,并且您可以在任何给定时间将容器连接到零个或多个这些网络。另外,您可以在不重新启动容器的情况下连接和断开网络中正在运行的容器。当容器连接到多个网络时,其外部连接通过第一个非内部网络以词汇顺序提供。

接下来的几节将更详细地介绍 Docker 的每个内置网络驱动程序。

桥梁网络

一个bridge网络是网络在泊坞中使用的最常见的类型。桥梁网络类似于默认bridge网络,但添加一些新功能并删除一些旧功能。以下示例创建了一些桥接网络并对这些网络上的容器执行了一些实验。

$ docker network create --driver bridge isolated_nw

1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b

$ docker network inspect isolated_nw

[
    {
        "Name": "isolated_nw",
        "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.21.0.0/16",
                    "Gateway": "172.21.0.1/16"
                }
            ]
        },
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

$ docker network ls

NETWORK ID          NAME                DRIVER
9f904ee27bf5        none                null
cf03ee007fb4        host                host
7fca4eb8c647        bridge              bridge
c5ee82f76de3        isolated_nw         bridge

创建网络后,可以使用该docker run --network=<NETWORK>选项在其上启动容器。

$ docker run --network=isolated_nw -itd --name=container3 busybox

8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c

$ docker network inspect isolated_nw
[
    {
        "Name": "isolated_nw",
        "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {}
            ]
        },
        "Containers": {
            "8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c": {
                "EndpointID": "93b2db4a9b9a997beb912d28bcfc117f7b0eb924ff91d48cfa251d473e6a9b08",
                "MacAddress": "02:42:ac:15:00:02",
                "IPv4Address": "172.21.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

您启动到此网络中的容器必须驻留在同一个 Docker 主机上。网络中的每个容器可以立即与网络中的其他容器进行通信。虽然,网络本身将容器与外部网络隔离开来。

Docker容器网络(引擎)  |  Docker container networking (Engine)

在用户定义的网桥网络中,不支持连接.。你可以公开和发布集装箱港口在这个网络中的容器上。如果您想要使部分bridge外部网络可用的网络。

Docker容器网络(引擎)  |  Docker container networking (Engine)

在希望在单个主机上运行相对较小的网络的情况下,桥接网络非常有用。但是,您可以通过创建网络来创建更大的overlay网络。

docker_gwbridge网络

docker_gwbridge是一个由 Docker 在两种不同情况下自动创建的本地桥接网络:

  • 初始化或加入群集时,Docker 会创建docker_gwbridge网络并将其用于不同主机上的群集节点之间的通信。
  • 当一个容器的网络都不能提供外部连接时,docker_gwbridge除容器的其他网络外,Docker 还将容器连接到网络,以便容器可以连接到外部网络或其他群集节点。

docker_gwbridge如果需要自定义配置,您可以提前创建网络,否则 Docker 会根据需要创建它。以下示例docker_gwbridge使用一些自定义选项创建网络。

$ docker network create --subnet 172.30.0.0/16 \
                        --opt com.docker.network.bridge.name=docker_gwbridge \
			--opt com.docker.network.bridge.enable_icc=false \
			docker_gwbridge

docker_gwbridge使用overlay网络时,网络始终存在。

以群模式覆盖网络

您可以在没有外部键值存储的情况下在以群集模式运行的管理器节点上创建覆盖网络。群体使覆盖网络只能用于群体中需要服务的节点。当您创建使用覆盖网络的服务时,管理器节点会自动将覆盖网络扩展到运行服务任务的节点。

要了解有关在群集模式下运行 Docker 引擎的更多信息,请参阅群集模式概述。

下面的例子显示了如何创建一个网络并将其用于群中管理器节点的服务:

$ docker network create \
  --driver overlay \
  --subnet 10.0.9.0/24 \
  my-multi-host-network

400g6bwzd68jizzdx5pgyoe95

$ docker service create --replicas 2 --network my-multi-host-network --name my-web nginx

716thylsndqma81j6kkkb5aus

只有群集服务可以连接到覆盖网络,而不是独立的容器。有关群集的更多信息,请参阅 Docker 群集模式覆盖网络安全模型和将服务附加到覆盖网络。

没有群模式的覆盖网络

如果您未在群集模式下使用 Docker 引擎,则overlay网络需要有效的键值存储服务。支持的键值存储包括Consul,Etcd 和 ZooKeeper(分布式存储)。在以这种方式创建网络之前,您必须安装并配置您选择的键值存储服务。Docker 托管您打算联网并且该服务必须能够通信。

注意:以群集模式运行的 Docker Engine 与外部键值存储的网络不兼容。

对于大多数 Docker 用户,不推荐使用这种覆盖网络。它可以与独立群集一起使用,并可能对在 Docker 之上构建解决方案的系统开发人员有用。它可能在将来被弃用。如果您认为您可能需要以这种方式使用覆盖网络,请参阅本指南。

自定义网络插件

如果您的需求未被上述任何网络机制解决,您可以使用 Docker 的插件基础结构编写自己的网络驱动程序插件。该插件将作为运行 Docker 守护进程的主机上的单独进程运行。使用网络插件是一个高级主题。

网络插件遵循与其他插件相同的限制和安装规则。所有插件都使用插件 API,并且具有包含安装,启动,停止和激活的生命周期。

一旦创建并安装了自定义网络驱动程序,就可以创建一个使用该驱动程序和该--driver标志的网络。

$ docker network create --driver weave mynet

您可以检查网络,连接和断开容器,并删除它。一个特定的插件可能有特定的要求,以便使用。查看插件的文档以获得特定信息。有关编写插件的详细信息,请参阅延伸码头和编写网络驱动插件...

嵌入式DNS服务器

Docker 守护程序运行嵌入式 DNS 服务器,该服务器在连接到同一用户定义网络的容器中提供 DNS 解析,以便这些容器可以将容器名称解析为IP地址。如果嵌入式 DNS 服务器无法解析请求,它将被转发到为该容器配置的任何外部DNS服务器。为了便于创建容器,只有可访问的嵌入式 DNS 服务器127.0.0.11将在容器的resolv.conf文件中列出。有关用户定义网络中嵌入式 DNS 服务器的更多信息,请参阅用户定义网络中的嵌入式 DNS 服务器

公开和发布端口

在 Docker 网络中,有两种直接涉及网络端口的不同机制:公开和发布端口。这适用于默认桥接网络和用户定义桥接网络。

  • 您使用EXPOSEDockerfile中的关键字或--expose标志暴露端口docker run。公开端口是一种记录使用哪些端口的方法,但并不实际映射或打开任何端口。公开端口是可选的。
  • 您使用PUBLISHDockerfile 中的关键字或--publish标志来发布端口docker run。这告诉 Docker 在容器的网络接口上打开哪些端口。端口发布时,它将映射到30000主机上的可用高端端口(高于),除非您在运行时指定要在主机上映射的端口。您无法在 Dockerfile 中的主机上指定要映射到的端口,因为无法保证端口在您运行映像的主机上可用。

本示例将容器中的端口80发布到32768主机上的随机高端口(在这种情况下)。该-d标志将导致容器在后台运行,以便您可以发出该docker ps命令。

$ docker run -it -d -p 80 nginx $ docker ps 64879472feea nginx“nginx -g'daemon ...”43小时前Up大约一分钟443 / tcp,0.0.0.0:32768->80/tcp blissful_mclean

下一个示例指定端口80应映射到主机上的端口8080。如果端口8080不可用,它将失败。

$ docker run -it -d -p 8080:80 nginx $ docker ps b9788c7adca3 nginx“nginx -g'daemon ...”43小时前上传3秒80 / tcp,443 / tcp,0.0.0.0:8080->80 / tcp goofy_brahmagupta

使用带有容器的代理服务器

如果您的容器需要使用 HTTP,HTTPS 或 FTP 代理服务器,则可以采用不同的方式对其进行配置:

  • 在 Docker 17.07及更高版本中,您可以配置 Docker 客户端以自动将代理信息传递给容器。
  • 在 Docker 17.06 及更低版本中,您必须在容器中设置适当的环境变量。您可以在构建图像时(这会使图像的可移植性降低)或创建或运行容器时执行此操作。

配置Docker客户端

仅限边缘:此选项仅在Docker CE Edge版本中可用。请参阅Docker CE Edge。

  1. 在Docker客户端上,创建或编辑~/.config.json启动容器的用户的主目录中的文件。添加JSON(如下所示),用代理服务器的类型httpsproxyftpproxy必要时替换代理服务器的类型,并替换代理服务器的地址和端口。您可以同时配置多个代理服务器。通过将noProxy密钥设置为一个或多个逗号分隔的IP地址或主机,您可以选择性地排除通过代理服务器的主机或范围。*如本例所示,支持使用字符作为通配符。{“proxies”:{“httpProxy”:“http://127.0.0.1:3001”,“noProxy”:“* .test.example.com,.example2.com”}}保存文件。
  1. 当您创建或启动新容器时,环境变量将在容器中自动设置。

手动设置环境变量

当您创建图像或--env在创建或运行容器时使用该标记时,可以将一个或多个以下变量设置为适当的值。此方法使图像的可移植性降低,因此,如果您拥有 Docker 17.07或更高版本,则应该配置 Docker 客户端。

变量

Dockerfile示例

码头运行示例

HTTP_PROXY

ENV HTTP_PROXY“http://127.0.0.1:3001”

--env HTTP_PROXY“http://127.0.0.1:3001”

HTTPS_PROXY

ENV HTTPS_PROXY“https://127.0.0.1:3001”

--env HTTPS_PROXY“https://127.0.0.1:3001”

FTP_PROXY

ENV FTP_PROXY“ftp://127.0.0.1:3001”

--env FTP_PROXY“ftp://127.0.0.1:3001”

NO_PROXY

ENV NO_PROXY“* .test.example.com,.example2.com”| -env NO_PROXY“* .test.example.com,.example2.com”`| |

链接

在 Docker 包含用户定义的网络之前,您可以使用 Docker --link功能来允许容器将另一个容器的名称解析为IP地址,并且还允许它访问链接容器的环境变量。在可能的情况下,您应该避免使用遗留--link标志。

当您创建链接时,当您使用默认bridge网络或使用用户定义的网桥时,它们的行为会有所不同。有关详细信息,请参阅默认bridge网络中的链接功能的传统链接以及用户定义网络中的链接容器,以获取用户定义网络中的链接功能。

Docker和iptables

Linux 主机使用调用的内核模块iptables来管理对网络设备的访问,包括路由,端口转发,网络地址转换(NAT)以及其他问题。iptables当您启动或停止发布端口的容器时,当您创建或修改网络或将容器附加到它们或其他与网络相关的操作时,Docker会修改规则。

充分讨论iptables超出了这个话题的范围。要查看哪些iptables规则随时有效,可以使用iptables -L。多个表存在,你可以列出一个特定的表,例如natprerouting或者postrouting,使用命令如iptables -t nat -L。有关完整的文档iptables,请参阅netfilter / iptables。

通常,iptables规则由初始化脚本或守护程序进程创建,例如firewalld。规则不会在系统重新启动时持续存在,因此脚本或实用程序必须在系统引导时运行,通常在运行级别3或在网络初始化之后运行。请查阅您的Linux发行版的网络文档,以获取有关使iptables规则持久化的适当方式的建议。

Docker 动态管理iptables守护进程的规则以及容器,服务和网络。在Docker 17.06及更高版本中,您可以将规则添加到名为的新表中DOCKER-USER,并且这些规则将在 Docker 自动创建任何规则之前加载。如果您需要预先填充iptablesDocker 运行之前需要到位的规则,这会非常有用。

相关信息

  • 使用网络命令
  • 开始使用多主机网络
  • 在容器中管理数据
  • Docker机器概述
  • Docker群集概述
  • 调查LibNetwork项目

网络,网络,iptables,用户定义的网络,网桥,防火墙,端口

引擎 | Engine相关

1..NET核心应用程序(引擎) | .NET Core application (Engine)
2.关于图像,容器和存储驱动程序(引擎) | About images, containers, and storage drivers (Engine)
3.向swarm添加节点(Engine) | Add nodes to the swarm (Engine)
4.应用自定义元数据(引擎) | Apply custom metadata (Engine)
5.应用滚动更新(引擎) | Apply rolling updates (Engine)
6.apt-cacher-ng
7.编写Dockerfiles(引擎)的最佳实践 | Best practices for writing Dockerfiles (Engine)
8.二进制(引擎) | Binaries (Engine)
9.将容器端口绑定到主机(引擎) | Bind container ports to the host (Engine)
10.突破性变化(引擎) | Breaking changes (Engine)
11.建立自己的网桥 | Build your own bridge (Engine)
12.CentOS (Engine)
13.CentOS (Engine)
14.配置容器DNS(引擎) | Configure container DNS (Engine)
15.在用户定义的网络中配置容器DNS(引擎) | Configure container DNS in user-defined networks (Engine)
16.CouchDB (Engine)
17.创建基本映像(引擎) | Create a base image (Engine)
18.创建群(引擎) | Create a swarm (Engine)
19.自定义docker0网桥(引擎) | Customize the docker0 bridge (Engine)
20.Debian (Engine)
21.默认桥接网络 | Default bridge network
22.删除服务(引擎) | Delete the service (Engine)
23.部署服务(引擎) | Deploy a service (Engine)
24.将服务部署到一个群(引擎) | Deploy services to a swarm (Engine)
25.不推荐的引擎功能 | Deprecated Engine features
26.Docker概述(引擎) | Docker overview (Engine)
27.Docker运行参考(引擎) | Docker run reference (Engine)
28.Dockerfile引用(引擎) | Dockerfile reference (Engine)
29.Dockerize应用程序 | Dockerize an application
30.排空节点(引擎) | Drain a node (Engine)
31.引擎 | Engine
32.FAQ(引擎) | FAQ (Engine)
33.Fedora (Engine)
34.开始 | Get started (Engine)
35.开始使用macvlan网络驱动程序 | Get started with macvlan network driver (Engine)
36.开始使用多主机网络 | Get started with multi-host networking (Engine)
37.节点如何工作 | How nodes work (Engine)
38.服务如何运作(引擎) | How services work (Engine)
39.图像管理 | Image management (Engine)
40.检查服务(引擎) | Inspect the service (Engine)
41.安装Docker(引擎) | Install Docker (Engine)
42.IPv6与Docker(引擎) | IPv6 with Docker (Engine)
43.将节点加入群集(引擎) | Join nodes to a swarm (Engine)
44.旧容器链接(引擎) | Legacy container links (Engine)
45.锁定你的群(引擎) | Lock your swarm (Engine)
46.管理群中的节点(引擎) | Manage nodes in a swarm (Engine)
47.使用Docker机密管理敏感数据(引擎) | Manage sensitive data with Docker secrets (Engine)
48.使用PKI管理swarm安全性(引擎) | Manage swarm security with PKI (Engine)
49.管理群体服务网络(引擎) | Manage swarm service networks (Engine)
50.迁移到引擎1.10 | Migrate to Engine 1.10
51.可选的Linux安装后步骤(引擎) | Optional Linux post-installation steps (Engine)
52.总览 | Overview (Engine)
53.总览 | Overview (Engine)
54.PostgreSQL(引擎) | PostgreSQL (Engine)
55.群集模式中的筏共识(引擎) | Raft consensus in swarm mode (Engine)
56.Riak (Engine)
57.以群集模式运行Docker Engine | Run Docker Engine in swarm mode
58.扩展服务(引擎) | Scale the service (Engine)
59.SDKs (Engine)
60.选择一个存储驱动 | Select a storage driver (Engine)
61.设置教程(引擎) | Set up for the tutorial (Engine)
62.SSHd (Engine)
63.存储驱动总览 | Storage driver overview (Engine)
64.存储服务配置数据(引擎) | Store service configuration data (Engine)
65.Swarm管理指南(引擎) | Swarm administration guide (Engine)
66.Swarm模式关键概念(引擎) | Swarm mode key concepts (Engine)
67.Swarm模式覆盖网络安全模型(引擎) | Swarm mode overlay network security model (Engine)
68.群模式概述(引擎) | Swarm mode overview (Engine)
69.Ubuntu (Engine)
70.Ubuntu (Engine)
71.了解容器通信(引擎) | Understand container communication (Engine)
72.使用多阶段构建(引擎) | Use multi-stage builds (Engine)
73.使用swarm模式路由网格(引擎) | Use swarm mode routing mesh (Engine)
74.使用AUFS存储驱动程序(引擎) | Use the AUFS storage driver (Engine)
75.使用Btrfs存储驱动程序(引擎) | Use the Btrfs storage driver (Engine)
76.使用设备映射器存储驱动程序(引擎) | Use the Device mapper storage driver (Engine)
77.使用OverlayFS存储驱动程序(引擎) | Use the OverlayFS storage driver (Engine)
78.使用VFS存储驱动程序(引擎) | Use the VFS storage driver (Engine)
79.使用ZFS存储驱动程序(引擎) | Use the ZFS storage driver (Engine)
80.处理图像 | Work with images
81.使用网络命令(引擎) | Work with network commands (Engine)
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06