我如何获得主机networking以docker群模式工作

从最近合并到Docker 17.06候选版本的公关中,我们现在可以支持群集服务的主机联网。 但是,尝试一个非常类似的命令,我看到一个错误:

$ docker service create --name nginx-host --network host nginx Error response from daemon: could not find the corresponding predefined swarm network: network host not found 

我正在运行17.06候选版本:

 $ docker version Client: Version: 17.06.0-ce-rc2 API version: 1.30 Go version: go1.8.3 Git commit: 402dd4a Built: Wed Jun 7 10:07:14 2017 OS/Arch: linux/amd64 Server: Version: 17.06.0-ce-rc2 API version: 1.30 (minimum version 1.12) Go version: go1.8.3 Git commit: 402dd4a Built: Wed Jun 7 10:06:06 2017 OS/Arch: linux/amd64 Experimental: true 

与我现在的docker现在支持的命令有什么不同?

与Docker开发者讨论后,这个特性需要swarm在升级到17.06之后初始化。 在群集初始化运行之前创build的主机和桥接networking不能与节点本地networking一起使用。 由于这是一个testing环境,重新创build了我的群:

 $ docker swarm leave --force Node left the swarm. $ docker swarm init Swarm initialized: current node (***) is now a manager. ... 

现在docker service create命令的作品:

 $ docker service create --name nginx-host --network host nginx i83udvgk0qga0k7toq4v7kh0x $ docker service ls ID NAME MODE REPLICAS IMAGE PORTS i83udvgk0qga nginx-host replicated 1/1 docker.io/library/nginx@sha256:41ad9967ea448d7c2b203c699b429abe1ed5af331cd92533900c6d77490e0268 

要validation,我们检查容器内的networking接口:

 $ docker ps | grep nginx 7024a2764b46 nginx "nginx -g 'daemon ..." 16 hours ago Up 16 hours nginx-host.1.i2blydombywzhz9zy06j8wrzf $ docker exec 702 ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether *** 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether *** ...