[Docker Administration] [Part V.A] Docker Networking - Bridge
Table Of Contents
BRIDGE NETWORK
Default Bridge
Show Network
sudo docker network ls
Running 2 Container Alpine run ASH
sudo docker run -dit --name con1 alpine ash
sudo docker run -dit --name con2 alpine ash
Show Container
sudo docker container ls
Show Network
sudo docker network ls
Inspect Bridge Network
sudo docker network inspect bridge
enter to con1
sudo docker attach con1
show ip in con1
ip add
Ping IP to Google DNS [Status must Success]
ping -c 3 8.8.8.8
Ping to Another Container, Before that search IP Address con2 [Status must Success]
docker container inspect con2 | grep -i IPAddress
ping 172.17.0.2
Ping Name Of Container
ping -c 3 con2
Dettach container
Ctrl+P, Ctrl+Q
Remove 2 container
sudo docker container rm -f con1 con2
User-Defined Bridge Network
create bridge network for login-service
sudo docker network create --driver bridge login-net
Show Networks
sudo docker network ls
Show Details login-net
sudo docker network inspect login-net
Scenario :
- con1 connect to default bridge
- con2 connect to network login-net
- con3 connect to default bridge and login-net
The Result :
- con1 can not connect to con2, but able ping to con3
- con2 can not connect to con1, but able ping to con3
- con3 can ping ip all container, but can not able ping name of container con1
- All container able ping to internet
Running container con1
sudo docker run -dit --name con1 alpine ash
Running container con2 with login-net network
sudo docker run -dit --name con2 --network login-net alpine ash
Running container con3 with default network
sudo docker run -dit --name con3 alpine ash
Check Detail Network con3
sudo docker container inspect con3
How to connect container con3 with default network bridge to netowrk login-net
sudo docker network connect login-net con3
Check Detail Network con3
docker container inspect con3
Now con3 have 2 network interface, for make sure login to con3
docker container exec -it con3 ash
ip add
List container
sudo docker container ls
Show Detail network bridge and login-net
sudo docker network inspect bridge
sudo docker network inspect login-net
Login to con3 and ping to all container
sudo docker attach con3
ping -c 3 172.17.0.2 #con1 [Success]
ping -c 3 con1 #[Failed]
ping -c 3 con2 #[Success]
Login to con2 and ping to all container
ping -c 3 172.17.0.2 #con1 [Failed]
ping -c 3 con1 #[Failed]
ping -c 3 con3 #[Success]
Ping Internet Login to con1 and ping to 8.8.8.8
docker container exec -it con1 ash
ping 8.8.8.8 #[success]
Login to con2 and ping to 8.8.8.8
docker container exec -it con2 ash
ping 8.8.8.8 #[success]
Login to con3 and ping to 8.8.8.8
docker container exec -it con3 ash
ping 8.8.8.8 #[success]
If you can not ping to outside enable forward in your host
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
Remove All Container and Network
sudo docker container rm -f con1 con2 con3
sudo docker network rm login-net