Docker – Docker Network – Connect, Disconnect – Learning-Ocean
Docker Networking (Connect, Disconnect)
In this guide, we will see how we can connect multiple networks to a container and how to disconnect them.
Create a container with the bridge network-
gaurav@learning
-ocean:
~$
docker container run -it --network bridgeubuntu:
14.04
bash root@1a5752e79f47
:/
eth0 Linkencap:
Ethernet HWaddr02
:
42
:ac:
11
:
00
:
02
inetaddr:
172.17
.0.2
Bcast:
172.17
.255.255
Mask:
255.255
.0.0
UP BROADCAST RUNNING MULTICASTMTU:
1500
Metric:
1
RXpackets:
7
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
0
RXbytes:
606
(606.0
B) TXbytes:
0
(0.0
B) lo Linkencap:
Local Loopback inetaddr:
127.0
.0.1
Mask:
255.0
.0.0
UP LOOPBACK RUNNINGMTU:
65536
Metric:
1
RXpackets:
0
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
1000
RXbytes:
0
(0.0
B) TXbytes:
0
(0.0
B) root@1a5752e79f47
:/
It has been allocated with eht0 NIC. If we want to allocate it with one more NIC interface, create one more network with
Let’s create a network with name ‘test’-
gaurav@learning
-ocean:
~$
docker network create test 348f7295d3cac9a633c0a8619879a55c0371691c454139f3b9f3f5e7693a239d
By default, a bridge network is created.
gaurav@learning
-ocean:
~$
docker network ls NETWORK ID NAME DRIVER SCOPE 6c51373f78ac bridge bridge local 3a33f83c3663 host host local e4ebd601732c none null local 348f7295d3ca test bridge local gaurav@learning
-ocean:
~$
To attach this network to the container, use below command –
$
docker network connect <network_name> <container_name>
example:
gaurav@learning
-ocean:
~$
docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a5752e79f47ubuntu:
14.04
"bash"
3
minutes ago Up23
seconds focused_heisenberg gaurav@learning
-ocean:
~$
docker network connect test 1a5752e79f47 gaurav@learning
-ocean:
~$
Another network has been attached to the container with name as eth1-
gaurav@learning
-ocean:
~$
docker container exec -it 1a bash root@1a5752e79f47
:/
eth0 Linkencap:
Ethernet HWaddr02
:
42
:ac:
11
:
00
:
02
inetaddr:
172.17
.0.2
Bcast:
172.17
.255.255
Mask:
255.255
.0.0
UP BROADCAST RUNNING MULTICASTMTU:
1500
Metric:
1
RXpackets:
12
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
0
RXbytes:
976
(976.0
B) TXbytes:
0
(0.0
B) eth2 Linkencap:
Ethernet HWaddr02
:
42
:ac:
13
:
00
:
02
inetaddr:
172.19
.0.2
Bcast:
172.19
.255.255
Mask:
255.255
.0.0
UP BROADCAST RUNNING MULTICASTMTU:
1500
Metric:
1
RXpackets:
11
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
0
RXbytes:
906
(906.0
B) TXbytes:
0
(0.0
B) lo Linkencap:
Local Loopback inetaddr:
127.0
.0.1
Mask:
255.0
.0.0
UP LOOPBACK RUNNINGMTU:
65536
Metric:
1
RXpackets:
0
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
1000
RXbytes:
0
(0.0
B) TXbytes:
0
(0.0
B) root@1a5752e79f47
:/
Now to disconnect this network, you can simply replace the connect with disconnect-
$
docker network disconnect <network_name> <container_name>
Example:
gaurav@learning
-ocean:
~$
docker network disconnect test 1a5752e79f47 gaurav@learning
-ocean:
~$
Verifying the same by running ifconfig command on the container-
gaurav@learning
-ocean:
~$
docker container exec -it 1a bash root@1a5752e79f47
:/
eth0 Linkencap:
Ethernet HWaddr02
:
42
:ac:
11
:
00
:
02
inetaddr:
172.17
.0.2
Bcast:
172.17
.255.255
Mask:
255.255
.0.0
UP BROADCAST RUNNING MULTICASTMTU:
1500
Metric:
1
RXpackets:
12
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
0
RXbytes:
976
(976.0
B) TXbytes:
0
(0.0
B) lo Linkencap:
Local Loopback inetaddr:
127.0
.0.1
Mask:
255.0
.0.0
UP LOOPBACK RUNNINGMTU:
65536
Metric:
1
RXpackets:
0
errors:
0
dropped:
0
overruns:
0
frame:
0
TXpackets:
0
errors:
0
dropped:
0
overruns:
0
carrier:
0
collisions:
0
txqueuelen:
1000
RXbytes:
0
(0.0
B) TXbytes:
0
(0.0
B) root@1a5752e79f47
:/
Note: Connecting a container with none network with another network
You cannot connect a container with none network with another network. You will below error even you try to-
Error response from daemon: Container cannot be connected to multiple networks with one of the networks in private (none) mode