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 bridge

ubuntu:

14.04

bash root

@1a5752e79f47

:/

eth0      Link

encap:

Ethernet  HWaddr

02

:

42

:ac:

11

:

00

:

02

          inet

addr:

172.17

.

0.2

 

Bcast:

172.17

.

255.255

 

Mask:

255.255

.

0.0

          UP BROADCAST RUNNING MULTICAST 

MTU:

1500

 

Metric:

1

          RX

packets:

7

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:

606

(

606.0

B)  TX

bytes:

0

(

0.0

B) lo        Link

encap:

Local Loopback           inet

addr:

127.0

.

0.1

 

Mask:

255.0

.

0.0

          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:

1000

          RX

bytes:

0

(

0.0

B)  TX

bytes:

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 1a5752e79f47   

ubuntu:

14.04

   

"bash"

   

3

minutes ago   Up

23

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      Link

encap:

Ethernet  HWaddr

02

:

42

:ac:

11

:

00

:

02

          inet

addr:

172.17

.

0.2

 

Bcast:

172.17

.

255.255

 

Mask:

255.255

.

0.0

          UP BROADCAST RUNNING MULTICAST 

MTU:

1500

 

Metric:

1

          RX

packets:

12

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:

976

(

976.0

B)  TX

bytes:

0

(

0.0

B) eth2      Link

encap:

Ethernet  HWaddr

02

:

42

:ac:

13

:

00

:

02

          inet

addr:

172.19

.

0.2

 

Bcast:

172.19

.

255.255

 

Mask:

255.255

.

0.0

          UP BROADCAST RUNNING MULTICAST 

MTU:

1500

 

Metric:

1

          RX

packets:

11

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:

906

(

906.0

B)  TX

bytes:

0

(

0.0

B) lo        Link

encap:

Local Loopback           inet

addr:

127.0

.

0.1

 

Mask:

255.0

.

0.0

          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:

1000

          RX

bytes:

0

(

0.0

B)  TX

bytes:

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      Link

encap:

Ethernet  HWaddr

02

:

42

:ac:

11

:

00

:

02

          inet

addr:

172.17

.

0.2

 

Bcast:

172.17

.

255.255

 

Mask:

255.255

.

0.0

          UP BROADCAST RUNNING MULTICAST 

MTU:

1500

 

Metric:

1

          RX

packets:

12

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:

976

(

976.0

B)  TX

bytes:

0

(

0.0

B) lo        Link

encap:

Local Loopback           inet

addr:

127.0

.

0.1

 

Mask:

255.0

.

0.0

          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:

1000

          RX

bytes:

0

(

0.0

B)  TX

bytes:

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