Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get host networking to work with docker swarm mode

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

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?

like image 734
BMitch Avatar asked Jun 09 '17 14:06

BMitch


People also ask

Which network driver should be used with Docker Swarm?

The overlay driver creates a distributed network that can span multiple Docker hosts, and therefore is the preferred driver for managing container communication within a multi-host cluster. overlay is the default driver for Docker swarm services.

How do I access Docker host network?

Accessing the Host With the Default Bridge Mode You just need to reference it by its Docker network IP, instead of localhost or 127.0. 0.1 . Your host's Docker IP will be shown on the inet line. Connect to this IP address from within your containers to successfully access the services running on your host.

Does Docker use host network?

Docker network host, also known as Docker host networking, is a networking mode in which a Docker container shares its network namespace with the host machine. To access the application inside the container, use the port at the host's IP address (e.g., port 80).

What is the default network for swarm services?

By default, each container a service is running is connected to its local Docker daemon host's docker_gwbridge network. The docker_gwbridge network is created automatically when you initialize or join a swarm.


1 Answers

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.

...

Now the docker service create command works:

$ 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 ***
...
like image 162
BMitch Avatar answered Nov 15 '22 04:11

BMitch