Konteinerių tinklo vadovas: III dalis – „Docker“ konteinerių tinklų kūrimas

Tai trečioji serijos „Container Networking“ dalis. Šiame tinklaraščio įraše šiek tiek paaiškinsiu apie dokerių konteinerių tinklą.
Atlikau šiame straipsnyje nurodytus veiksmus, kad įdiegčiau docker Ubuntu.
Įdiegę doką, galite pamatyti docker0
įrenginį sąraše
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 02:fd:4d:34:55:76 brd ff:ff:ff:ff:ff:ff
11: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:cf:b4:c1:a8 brd ff:ff:ff:ff:ff:ff
Sukurkime „busybox“ konteinerį.
docker run --name bb -dt busybox
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02429964e449 busybox "sh" About a minute ago Up About a minute bb
Įrenginių sąraše matote veth7b01920@if16
sąsaja sukurta naudojant pagrindinį įrenginį kaip docker0.
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 02:fd:4d:34:55:76 brd ff:ff:ff:ff:ff:ff
11: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:cf:b4:c1:a8 brd ff:ff:ff:ff:ff:ff
17: veth7b01920@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
link/ether e2:15:50:88:11:03 brd ff:ff:ff:ff:ff:ff link-netnsid 2
Patikrinkime tinklo vardų erdvę.
ip netns list
Ir nematysite jokių tinklo vardų erdvių… Kaip taip??? Taip yra todėl, kad:
ip netns list command looks up network namespaces file in the
/var/run/netns directory.
However, the Docker daemon doesn’t create a reference of
the network namespace file in the /var/run/netns directory
after the creation. Therefore, ip netns ls cannot resolve the
network namespace file
Ref: https://www.baeldung.com/linux/docker-network-namespace-invisible
Jei nori ip netns list
norėdami parodyti vardų srities pavadinimą, kurį sukūrė docker, atlikite toliau nurodytus veiksmus
export container_name=bb
container_pid=$(sudo docker inspect -f '' $container_name)
echo $container_pid
sudo touch /var/run/netns/$container_name
sudo mount -o bind /proc/$container_pid/ns/net /var/run/netns/$container_name
Dabar galite pamatyti vardų srities pavadinimą.
ip netns list
bb (id: 0)
sudo ip netns exec bb ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
Toliau pateikta diagrama padės jums tai geriau įsivaizduoti.
Su tuo aš atsisakau. Tikiuosi, kad ši tinklaraščio serija padės pašalinti netvarką jūsų konteinerių tinkle.