140_Docker网络


理解Docker0

清空所有环境,方便学习

:::info
清空docker容器
docker rm -f $(docker ps -qa)
清空docker镜像
docker rmi -f $(docker images -qa)
:::

[root@ecs-214025 admin]# docker rm -f $(docker ps -qa)
7fbb25c188c9
107a6fcd7ca7
1d1be8dc81d6
b8b405d44f1f
ac8bb4ac1c84
c91b9631f97c
622822d485ae
62d78af6293e
e53e519fedab
ac3543bde2b1
59354a985731
0674a988f22a
07c314ec28e9
8f645bb02d66
0b432faf8202
e1e03945f75d
[root@ecs-214025 admin]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@ecs-214025 admin]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@ecs-214025 admin]# docker rmi -f $(docker images -qa)
Untagged: diytomcat:latest
Deleted: sha256:b4d5213ae81c8d0a96cf685188232d843f83f3c18f4e2532e8b40d1007ba0673
Deleted: sha256:ba516a82f1e3a91edc4ff9aec74b357fd23b3f698e20ab49223b60d25503905

[root@ecs-214025 admin]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@ecs-214025 admin]# 

查看ip地址

:::info
ip addr
lo 本机回环地址
eth0 华为云内网地址
docker0 docker0地址
:::

[root@ecs-214025 admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:af:69:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 84527sec preferred_lft 84527sec
    inet6 fe80::f816:3eff:feaf:6950/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:24:19:02:ed brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:24ff:fe19:2ed/64 scope link 
       valid_lft forever preferred_lft forever
[root@ecs-214025 admin]# 

image.png

启动一个tomcat容器

[root@ecs-214025 admin]# docker run -d -P --name tomcat01 tomcat
Unable to find image 'tomcat:latest' locally
latest: Pulling from library/tomcat
405f018f9d1d: Pull complete 
160c99d3182b: Pull complete 
e07a736be37f: Pull complete 
eb991d49ce62: Pull complete 
0ff310af806b: Pull complete 
d6ea2eb01a71: Pull complete 
251a5c8e4a37: Pull complete 
Digest: sha256:9edc5c51c2dec7794769eede1e88a60e77abe355b73a77e231c464a8384d3697
Status: Downloaded newer image for tomcat:latest
51214ae064eba1851992dc1b6ece3561ee41e5c3c12e12561e600dd38ed5c0b2
[root@ecs-214025 admin]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS                                         NAMES
51214ae064eb   tomcat    "catalina.sh run"   45 seconds ago   Up 44 seconds   0.0.0.0:49155->8080/tcp, :::49155->8080/tcp   tomcat01
[root@ecs-214025 admin]# 

查看容器的内部网络地址

[root@ecs-214025 admin]# docker exec -it tomcat01 ip addr
OCI runtime exec failed: exec failed: unable to start container process: exec: "ip": executable file not found in $PATH: unknown
[root@ecs-214025 admin]# 

报错解决

:::info
参考文档:https://blog.csdn.net/weixin_45630258/article/details/124438067?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-124438067-blog-124163197.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-124438067-blog-124163197.pc_relevant_aa2&utm_relevant_index=1
:::
:::info
报错原因:我们下载的Tomcat镜像是精简版的,利用这个镜像去打开一个容器的时候发现没有ip这个命
解决方法:

  1. 查看系统版本信息:cat /etc/os-release

Linux系统分为两种:
1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等

RedHat系列的包管理工具是yum
Debian系列的包管理工具是apt-get

  1. 升级一下apt:apt update
  2. 安装 iproute2:apt install -y iproute2
    :::
[root@ecs-214025 admin]# docker exec -it tomcat01 /bin/bash

root@51214ae064eb:/usr/local/tomcat# cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

root@51214ae064eb:/usr/local/tomcat# apt install -y iproute2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package iproute2

root@51214ae064eb:/usr/local/tomcat# apt update
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]   
Get:2 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]                                                
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
11 packages can be upgraded. Run 'apt list --upgradable' to see them.

root@51214ae064eb:/usr/local/tomcat# apt install -y iproute2
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.34.0 /usr/local/share/perl/5.34.0 /usr/lib/x86_64-linux-gnu/perl5/5.34 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.34 /usr/share/perl/5.34 /usr/local/lib/site_perl) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Processing triggers for libc-bin (2.35-0ubuntu3) ...

root@51214ae064eb:/usr/local/tomcat# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
3456: eth0@if3457: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
root@51214ae064eb:/usr/local/tomcat# 

查看容器的内部网络地址

root@51214ae064eb:/usr/local/tomcat# exit
exit
[root@ecs-214025 admin]# docker exec -it tomcat01 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
3456: eth0@if3457: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@ecs-214025 admin]# 

本机ping容器内网地址

[root@ecs-214025 admin]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.054 ms
64 bytes from 172.17.0.2: icmp_seq=4 ttl=64 time=0.052 ms
^C
--- 172.17.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.052/0.053/0.054/0.005 ms
[root@ecs-214025 admin]# 

再次查看本机地址

[root@ecs-214025 admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:af:69:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 81574sec preferred_lft 81574sec
    inet6 fe80::f816:3eff:feaf:6950/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:24:19:02:ed brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:24ff:fe19:2ed/64 scope link 
       valid_lft forever preferred_lft forever
3457: vethfd31ee8@if3456: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether e6:23:d0:57:f1:1a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::e423:d0ff:fe57:f11a/64 scope link 
       valid_lft forever preferred_lft forever
[root@ecs-214025 admin]# 

原理

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

再启动一个容器测试

[root@ecs-214025 admin]# docker run -d -P --name tomcat02 tomcat
b8b92831b61537f8bcbc7f79649541fc35e57c263ffa736783da089ab30bec44
[root@ecs-214025 admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:af:69:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 81319sec preferred_lft 81319sec
    inet6 fe80::f816:3eff:feaf:6950/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:24:19:02:ed brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:24ff:fe19:2ed/64 scope link 
       valid_lft forever preferred_lft forever
3457: vethfd31ee8@if3456: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether e6:23:d0:57:f1:1a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::e423:d0ff:fe57:f11a/64 scope link 
       valid_lft forever preferred_lft forever
3459: veth5862eb4@if3458: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 72:72:86:7e:a7:4c brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::7072:86ff:fe7e:a74c/64 scope link 
       valid_lft forever preferred_lft forever
[root@ecs-214025 admin]# 

tomcat01容器 ping tomcat02容器

[root@ecs-214025 admin]# docker exec -it tomcat01 /bin/bash

root@51214ae064eb:/usr/local/tomcat# ping 172.17.0.3
bash: ping: command not found

root@51214ae064eb:/usr/local/tomcat# apt install -y ping
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package ping is a virtual package provided by:
  inetutils-ping 2:2.2-2
  iputils-ping 3:20211215-1
You should explicitly select one to install.

E: Package 'ping' has no installation candidate

root@51214ae064eb:/usr/local/tomcat# apt install -y inetutils-ping
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Setting up inetutils-ping (2:2.2-2) ...

root@51214ae064eb:/usr/local/tomcat# ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: icmp_seq=0 ttl=64 time=0.106 ms
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.087 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.085 ms
^C--- 172.17.0.3 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.080/0.090/0.106/0.000 ms
root@51214ae064eb:/usr/local/tomcat# 

删除容器,对应网桥自动消失

[root@ecs-214025 admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:af:69:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 79101sec preferred_lft 79101sec
    inet6 fe80::f816:3eff:feaf:6950/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:24:19:02:ed brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:24ff:fe19:2ed/64 scope link 
       valid_lft forever preferred_lft forever
3457: vethfd31ee8@if3456: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether e6:23:d0:57:f1:1a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::e423:d0ff:fe57:f11a/64 scope link 
       valid_lft forever preferred_lft forever
3459: veth5862eb4@if3458: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 72:72:86:7e:a7:4c brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::7072:86ff:fe7e:a74c/64 scope link 
       valid_lft forever preferred_lft forever
       
[root@ecs-214025 admin]# docker rm -f tomcat01
tomcat01

[root@ecs-214025 admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:af:69:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.8/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0
       valid_lft 79068sec preferred_lft 79068sec
    inet6 fe80::f816:3eff:feaf:6950/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:24:19:02:ed brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:24ff:fe19:2ed/64 scope link 
       valid_lft forever preferred_lft forever
3459: veth5862eb4@if3458: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 72:72:86:7e:a7:4c brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::7072:86ff:fe7e:a74c/64 scope link 
       valid_lft forever preferred_lft forever
[root@ecs-214025 admin]# 

容器互联--link,已不推荐使用

一个容器名ping另一个容器名,ping不通

[root@ecs-214025 admin]# docker exec -it tomcat01 ping tomcat02
ping: unknown host
[root@ecs-214025 admin]# 

解决容器名ping不通的问题

:::info
注意:tomcat03可以ping通tomcat01,但tomcat01ping不通tomcat03
:::

[root@ecs-214025 admin]# docker run -d -P --name tomcat03 --link tomcat01 tomcat
71b00e08592f7e4a95a0241d339eeda8cd00b00c32ab553440053e51649fdc67
[root@ecs-214025 admin]# docker exec -it tomcat03 ping tomcat01
PING tomcat01 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.135 ms
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.087 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.096 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.094 ms
^C--- tomcat01 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.087/0.103/0.135/0.000 ms
[root@ecs-214025 admin]# docker exec -it tomcat01 ping tomcat03
ping: unknown host
[root@ecs-214025 admin]# 

查看原因,查看tomcat03的/etc/hosts文件

:::info
tomcat03的/etc/hosts文件中配置了:172.17.0.2 tomcat01 e345c6bc3b39
而tomcat01中没有配置tomcat03
所以,tomcat03可以ping通tomcat01,但tomcat01ping不通tomcat03
:::

[root@ecs-214025 admin]# docker exec -it tomcat03 cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	tomcat01 e345c6bc3b39
172.17.0.4	71b00e08592f
[root@ecs-214025 admin]# docker exec -it tomcat01 cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	e345c6bc3b39
[root@ecs-214025 admin]# 

自定义网络

:::info
docker网络命令: docker network
查看所有的docker网络:docker network ls
:::

[root@ecs-214025 admin]# docker network --help

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.
[root@ecs-214025 admin]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
c1e17e591880   bridge    bridge    local
e6a48c4d2378   host      host      local
50aac80a579d   none      null      local
[root@ecs-214025 admin]# 

网络模式

image.png
image.png
image.png
image.png

创建网络 docker network create

[root@ecs-214025 admin]# docker network create --help

Usage:  docker network create [OPTIONS] NETWORK

Create a network

Options:
      --attachable           Enable manual container attachment
      --aux-address map      Auxiliary IPv4 or IPv6 addresses used by
                             Network driver (default map[])
      --config-from string   The network from which to copy the configuration
      --config-only          Create a configuration only network
  -d, --driver string        Driver to manage the Network (default "bridge")
      --gateway strings      IPv4 or IPv6 Gateway for the master subnet
      --ingress              Create swarm routing-mesh network
      --internal             Restrict external access to the network
      --ip-range strings     Allocate container ip from a sub-range
      --ipam-driver string   IP Address Management Driver (default "default")
      --ipam-opt map         Set IPAM driver specific options (default map[])
      --ipv6                 Enable IPv6 networking
      --label list           Set metadata on a network
  -o, --opt map              Set driver specific options (default map[])
      --scope string         Control the network's scope
      --subnet strings       Subnet in CIDR format that represents a network
                             segment
[root@ecs-214025 admin]# 

[root@ecs-214025 admin]# docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 mynet
4a8fbd908f27c20c1bf76f32e45254ff67a7f1e25f48b3a4585cd1e13bfe9d0d

[root@ecs-214025 admin]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
c1e17e591880   bridge    bridge    local
e6a48c4d2378   host      host      local
4a8fbd908f27   mynet     bridge    local
50aac80a579d   none      null      local
[root@ecs-214025 admin]# 

[root@ecs-214025 admin]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "4a8fbd908f27c20c1bf76f32e45254ff67a7f1e25f48b3a4585cd1e13bfe9d0d",
        "Created": "2022-07-10T00:21:52.607709844+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
[root@ecs-214025 admin]# 

使用自定义网络创建容器

[root@ecs-214025 admin]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
dd693e5fb7eabe8172169ec63ba0d86344f036c07d9d532568e65b9f7b7d9652
[root@ecs-214025 admin]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
3ddd60d0c07c228416566b4b2b424d10d7753a40698437a152e506576668f90a
[root@ecs-214025 admin]# 

:::info
查看网络元数据,查看容器使用网络情况
:::
image.png

[root@ecs-214025 admin]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "4a8fbd908f27c20c1bf76f32e45254ff67a7f1e25f48b3a4585cd1e13bfe9d0d",
        "Created": "2022-07-10T00:21:52.607709844+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "3ddd60d0c07c228416566b4b2b424d10d7753a40698437a152e506576668f90a": {
                "Name": "tomcat-net-02",
                "EndpointID": "95400f394f9a505f363eb165024ffe3e80155c27fa67286dc12e605005c606b9",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "dd693e5fb7eabe8172169ec63ba0d86344f036c07d9d532568e65b9f7b7d9652": {
                "Name": "tomcat-net-01",
                "EndpointID": "4ba59a8d7d7ba69be3ac414a1bcc3ad6635930e8e2fae9f3805361600fa25877",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
[root@ecs-214025 admin]# 

测试使用自定义网络的容器间是否可以ping通

[root@ecs-214025 admin]# docker exec -it tomcat-net-01 ping 172.18.0.3
PING 172.18.0.3 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.113 ms
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.099 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.098 ms
^C--- 172.18.0.3 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.098/0.103/0.113/0.000 ms
[root@ecs-214025 admin]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.083 ms
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.087 ms
^C--- tomcat-net-02 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.083/0.086/0.089/0.000 ms
[root@ecs-214025 admin]# 

image.png
image.png

网络连通

两个网络之间是否可以ping通

:::info
mynet下的容器和docker0下的容器是否可以ping通?怎么ping通?
:::

创建docker0下的容器

[root@ecs-214025 admin]# docker run -d -P --name tomcat01 tomcat
0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648
[root@ecs-214025 admin]# docker run -d -P --name tomcat02 tomcat
f1f1c50b177cf5fb245253f016c00c3e0f246c618142dc2cc8bebe484e3ca505
[root@ecs-214025 admin]# 

tomcat-net-01 ping tomcat01

:::info
tomcat-net-01 ping tomcat01 ping不通
:::

[root@ecs-214025 admin]# docker exec -it tomcat-net-01 ping tomcat01
ping: unknown host
[root@ecs-214025 admin]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.098 ms
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.085 ms
^C--- tomcat-net-02 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.085/0.091/0.098/0.000 ms
[root@ecs-214025 admin]# 

网络连通命令 docker network connect

[root@ecs-214025 admin]# docker network --help

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.
[root@ecs-214025 admin]# docker network connect --help

Usage:  docker network connect [OPTIONS] NETWORK CONTAINER

Connect a container to a network

Options:
      --alias strings           Add network-scoped alias for the container
      --driver-opt strings      driver options for the network
      --ip string               IPv4 address (e.g., 172.30.100.104)
      --ip6 string              IPv6 address (e.g., 2001:db8::33)
      --link list               Add link to another container
      --link-local-ip strings   Add a link-local address for the container
[root@ecs-214025 admin]# 

mynet网络连通tomcat01容器

:::info
连通就是将tomcat01容器加入到mynet网络
:::

[root@ecs-214025 admin]# docker network connect mynet tomcat01
[root@ecs-214025 admin]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "4a8fbd908f27c20c1bf76f32e45254ff67a7f1e25f48b3a4585cd1e13bfe9d0d",
        "Created": "2022-07-10T00:21:52.607709844+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648": {
                "Name": "tomcat01",
                "EndpointID": "f7dfb07e8343a5cd0afa499e7690dde6242e0c7d10d6061047ffb4b971e88644",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            },
            "3ddd60d0c07c228416566b4b2b424d10d7753a40698437a152e506576668f90a": {
                "Name": "tomcat-net-02",
                "EndpointID": "95400f394f9a505f363eb165024ffe3e80155c27fa67286dc12e605005c606b9",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "dd693e5fb7eabe8172169ec63ba0d86344f036c07d9d532568e65b9f7b7d9652": {
                "Name": "tomcat-net-01",
                "EndpointID": "4ba59a8d7d7ba69be3ac414a1bcc3ad6635930e8e2fae9f3805361600fa25877",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
[root@ecs-214025 admin]# 

:::info
一个容器两个IP
:::
image.png

[root@ecs-214025 admin]# docker inspect tomcat01
[
    {
        "Id": "0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648",
        "Created": "2022-07-10T03:29:32.653696201Z",
        "Path": "catalina.sh",
        "Args": [
            "run"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 28872,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-07-10T03:29:33.02782054Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:451d25ef4583d58da6cb84bbbfd36aa6e752a8efa3d9a137da9b77334e7b902b",
        "ResolvConfPath": "/var/lib/docker/containers/0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648/hostname",
        "HostsPath": "/var/lib/docker/containers/0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648/hosts",
        "LogPath": "/var/lib/docker/containers/0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648/0acab768e2958b518fa7efc44be17ae640e18b352db66614c65764ff3cd43648-json.log",
        "Name": "/tomcat01",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": true,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/3d457840350e1c20a11438f154d1e82c34d718b6bcb4c3f286dbe88672111ea0-init/diff:/var/lib/docker/overlay2/d525a9819196f29e86a65a9e752ce05bf1b67401be6b9efbd842244a0465e1bc/diff:/var/lib/docker/overlay2/81ca2e0b151b0f99d24af3d250149ffa7ce2b4ab5b97d5c5ca1a667fbeaafb76/diff:/var/lib/docker/overlay2/8e0a161996f5509e1218538a76cba90f2175f87569f695445e74d1702c4448f9/diff:/var/lib/docker/overlay2/31b18f77d869b414d5b85248f86c6f855a5f93377e443ec001cd33f7d1376243/diff:/var/lib/docker/overlay2/79ddc1209bafe94867bb1fef1d85dc2c3e262e56e62fd5dd823400fa8a208b3c/diff:/var/lib/docker/overlay2/5b71fc06668015dce50c623b1d42fbcce34c7cd61dd98f5cec4d8b23a9cdcbbb/diff:/var/lib/docker/overlay2/d91ac3af8d78c1319d0137ae51817869a221db8c4b006762c0b11f8615dd8cf5/diff",
                "MergedDir": "/var/lib/docker/overlay2/3d457840350e1c20a11438f154d1e82c34d718b6bcb4c3f286dbe88672111ea0/merged",
                "UpperDir": "/var/lib/docker/overlay2/3d457840350e1c20a11438f154d1e82c34d718b6bcb4c3f286dbe88672111ea0/diff",
                "WorkDir": "/var/lib/docker/overlay2/3d457840350e1c20a11438f154d1e82c34d718b6bcb4c3f286dbe88672111ea0/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "0acab768e295",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=en_US.UTF-8",
                "LANGUAGE=en_US:en",
                "LC_ALL=en_US.UTF-8",
                "JAVA_VERSION=jdk-17.0.3+7",
                "JAVA_HOME=/opt/java/openjdk",
                "CATALINA_HOME=/usr/local/tomcat",
                "TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
                "LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
                "GPG_KEYS=A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
                "TOMCAT_MAJOR=10",
                "TOMCAT_VERSION=10.0.22",
                "TOMCAT_SHA512=fe46db8794f066882b30e7a94bd8d3dbcf29e8e8ffaf67c1355846755745a7c9eafd124819283f218bcf410921a485b44b57b56fd6251fb99d67d95f3dd36826"
            ],
            "Cmd": [
                "catalina.sh",
                "run"
            ],
            "Image": "tomcat",
            "Volumes": null,
            "WorkingDir": "/usr/local/tomcat",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "0fb2a1ecd6480cf986e950f949bfbafed27fa2a1c43f78aef8336701a82ccbf2",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "49165"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "49165"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/0fb2a1ecd648",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "26d6175901f84c8fbc8fbb552bf881f37ac77915c4582aa2a954f28222833208",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "c1e17e5918804d242b90300db0185948dc8b70b58708439899d4497f260c3136",
                    "EndpointID": "26d6175901f84c8fbc8fbb552bf881f37ac77915c4582aa2a954f28222833208",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                },
                "mynet": {
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": [
                        "0acab768e295"
                    ],
                    "NetworkID": "4a8fbd908f27c20c1bf76f32e45254ff67a7f1e25f48b3a4585cd1e13bfe9d0d",
                    "EndpointID": "f7dfb07e8343a5cd0afa499e7690dde6242e0c7d10d6061047ffb4b971e88644",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:04",
                    "DriverOpts": {}
                }
            }
        }
    }
]
[root@ecs-214025 admin]# 

tomcat-net-01 ping tomcat01 成功

[root@ecs-214025 admin]# docker exec -it tomcat-net-01 ping tomcat01
PING tomcat01 (172.18.0.4): 56 data bytes
64 bytes from 172.18.0.4: icmp_seq=0 ttl=64 time=0.129 ms
64 bytes from 172.18.0.4: icmp_seq=1 ttl=64 time=0.081 ms
64 bytes from 172.18.0.4: icmp_seq=2 ttl=64 time=0.085 ms
^C--- tomcat01 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.081/0.098/0.129/0.000 ms
[root@ecs-214025 admin]# 

posted @   清风(学习-踏实)  阅读(638)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
历史上的今天:
2021-07-11 080_Mybatis缓存
2021-07-11 070_Mybatis动态SQL
2021-07-11 060_Mybatis结果映射(多对一和一对多)
2021-07-11 050_Lombok
2021-07-11 040_Mybatis注解开发
2021-07-11 030_Mybatis日志和分页
2021-07-11 020_Mybatis配置解析
点击右上角即可分享
微信分享提示