diff --git a/containers/docker_handson.md b/containers/docker_handson.md index 89ae4de64cd208e7fe26408264423e5bdba115b7..9f06f9c874edf72ec6c13111f4df6132d44b4d3b 100644 --- a/containers/docker_handson.md +++ b/containers/docker_handson.md @@ -447,6 +447,131 @@ volumes: ``` +## Docker network +``` +$ ip address show​ +... + +$ docker run -it --network=none alpine /bin/sh​ +/ # ip address show +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 + 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 +/ # + + +$ docker network +Usage: docker network COMMAND +Manage networks +Commands: + connect Connect a container to a network + create Create a network + disconnect Disconnect a container from a network + inspect Display detailed information on one or more networks + ls List networks + prune Remove all unused networks + rm Remove one or more networks +Run 'docker network COMMAND --help' for more information on a command. + +$ docker network ls +NETWORK ID NAME DRIVER SCOPE +8cf72d5da8d9 bridge bridge local +77d5801c72d6 host host local +00059d5f3d9d minikube bridge local +9f01cae8edb7 none null local + +$ docker run -td --name test1 alpine​ +$ docker run -td --name test2 alpine​ + +$ docker exec -it test1 /bin/sh +/ # ip address show +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 + 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 +306: eth0@if307: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP + link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff + inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 + valid_lft forever preferred_lft forever +/ # exit + +$ docker exec -it test2 /bin/sh +/ # ip address show +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 + 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 +308: eth0@if309: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP + link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff + inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0 + valid_lft forever preferred_lft forever +/ # ping 172.17.0.2 +PING 172.17.0.2 (172.17.0.2): 56 data bytes +64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.252 ms +64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.246 ms +64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.230 ms +64 bytes from 172.17.0.2: seq=3 ttl=64 time=0.185 ms +64 bytes from 172.17.0.2: seq=4 ttl=64 time=0.173 ms +64 bytes from 172.17.0.2: seq=5 ttl=64 time=0.337 ms +^C +--- 172.17.0.2 ping statistics --- +6 packets transmitted, 6 packets received, 0% packet loss +round-trip min/avg/max = 0.173/0.237/0.337 ms +/ # exit + + +$ docker network ls +NETWORK ID NAME DRIVER SCOPE +8cf72d5da8d9 bridge bridge local +77d5801c72d6 host host local +00059d5f3d9d minikube bridge local +9f01cae8edb7 none null local + +$ docker network create bridge1 +21e98d5bc828cbc55ed90866bf93573b7677be433b2b03346f6e0a915d4b18fe + +$ docker network ls +NETWORK ID NAME DRIVER SCOPE +8cf72d5da8d9 bridge bridge local +21e98d5bc828 bridge1 bridge local +... + +$ docker run -td --name test3 --network=bridge1 alpine + +$ docker exec -it test3 /bin/sh +/ # ip address show +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 + 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 +311: eth0@if312: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP + link/ether 02:42:c0:a8:f0:02 brd ff:ff:ff:ff:ff:ff + inet 192.168.240.2/20 brd 192.168.255.255 scope global eth0 + valid_lft forever preferred_lft forever +/ # ping 172.17.0.2 +PING 172.17.0.2 (172.17.0.2): 56 data bytes +^C +--- 172.17.0.2 ping statistics --- +2 packets transmitted, 0 packets received, 100% packet loss +/ # ping 172.17.0.3 +PING 172.17.0.3 (172.17.0.3): 56 data bytes +^C +--- 172.17.0.3 ping statistics --- +4 packets transmitted, 0 packets received, 100% packet loss + +$ docker network connect bridge test3 + + +$ docker network inspect bridge +[ + { + "Name": "bridge", +... + +$ docker network inspect my-bridge | python -c "import sys, json; print([v['Name'] for k,v in json.load(sys.stdin)[0]['Containers'].items()])" + +``` ## Docker process management ```