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]#
启动一个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这个命
解决方法:
- 查看系统版本信息:cat /etc/os-release
Linux系统分为两种:
1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等
RedHat系列的包管理工具是yum
Debian系列的包管理工具是apt-get
- 升级一下apt:apt update
- 安装 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]#
原理
再启动一个容器测试
[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]#
网络模式
创建网络 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
查看网络元数据,查看容器使用网络情况
:::
[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]#
网络连通
两个网络之间是否可以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
:::
[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]#
· 阿里巴巴 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配置解析