如何使主机网络与docker swarm模式一起使用 [英] How do I get host networking to work with docker swarm mode

查看:122
本文介绍了如何使主机网络与docker swarm模式一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

来自此PR ,最近已合并到Docker的17.06版本候选中,我们现在支持带有群集服务的主机联网.但是,尝试一个非常类似的命令时,我看到一个错误:

From this PR that got recently merged into docker's 17.06 release candidate, we now have support for host networking with swarm services. However, trying out a very similar command I'm seeing an error:

$ 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版候选版本:

I'm running the 17.06 release candidate:

$ 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

泊坞窗现在支持的命令与我的命令有什么不同?

What's different from my command from what docker now supports?

推荐答案

与docker devs讨论后,此功能需要在升级到17.06之后初始化.在群集初始化运行之前创建的主机和桥接网络不能与节点本地网络一起使用.由于这是一个测试环境,因此使用以下方法重新创建了我的团队:

After discussing with the docker devs, this feature needs swarm to be initialized after the upgrade to 17.06. Host and bridge networks created before the swarm init runs cannot be used with the node-local networks. Since this was a test environment, recreated my swarm with:

$ 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

要进行验证,让我们检查容器内的网络接口:

To verify, lets check the network interfaces inside the container:

$ 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 ***
...

这篇关于如何使主机网络与docker swarm模式一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆