目录
1、Docker Native Network drivers
1. Docker 提供如下 5 种原生的 Network drivers
2. Docker 安装时,自动在host上创建了如下3个网络
1. 用户可按需创建 bridge 网桥,称为 user-defined Bridge
2. 创建一个 user-defined Bridge,命名为net1
3. 查看 net1 网桥信息,已自动配置 subnet 和 gateway
5. 启动3个 centos 容器,分别命名为c1、c2、c3
一、容器网络
1、Docker Native Network drivers
1. Docker 提供如下 5 种原生的 Network drivers
2. Docker 安装时,自动在host上创建了如下3个网络
2、none 网络
3、host 网络
4、bridge 网络
1. docker0 网络
2. 在宿主机上查看 docker0
3. 查看docker0 网络配置
4. 在后台运行一个名为httpd1 的 httpd 容器
# docker run -itd --name httpd1 httpd
5. 查看该容器的网络配置
确认"NetworkID"和docker0的ID相同,"IPAddress"同网段
# docker inspect httpd1
...输出省略
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "7a84c0c796f04413629020321d2adc0d35fbfdef419d5b9cee78998b0c494274",
#networkID对应brigde-ID
"EndpointID": "94c254fa5a2cb2da2c475ee4a24f5f00a8a6975d7c8cdb338e0fc0226389a7b9",
"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
...输出省略
5、user-defined Bridge 网络
1. 用户可按需创建 bridge 网桥,称为 user-defined Bridge
2. 创建一个 user-defined Bridge,命名为net1
# docker network create --driver bridge net1 #通过bridge桥接设备驱动创建net1
324c90cd97719e363e2e2c2ce0508f8a2d964bc41898ebcaf8bc827db3627fa8
3. 查看 net1 网桥信息,已自动配置 subnet 和 gateway
root@k8s-master:~# docker network inspect net1
...输出省略
"Name": "net1",
"Id": "324c90cd97719e363e2e2c2ce0508f8a2d964bc41898ebcaf8bc827db3627fa8",
"Created": "2022-10-26T08:10:28.784844522Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
...输出省略
4. 创建第二个网桥,指定IP网段,命名为 net2
# docker network create --driver bridge --subnet 172.10.10.0/24 --gateway 172.10.10.1 net2
6eecbf049df44ecbd7aad0978115aac0cad4942831fa76af2e34f99f8d09fcd5
5. 启动3个 centos 容器,分别命名为c1、c2、c3
6. 查看三个 centos 容器的 IP 地址信息
# docker inspect c1 c2 c3 | grep -A 12 Networks | grep "IPAddress" #依次对应c1、c2、c3
"IPAddress": "172.18.0.2",
"IPAddress": "172.10.10.2",
"IPAddress": "172.10.10.10",
7. 进入容器c3,进行连通性测试
8. 为 c1 添加一块网卡,加入到 net2 网络
~# docker network connect net2 c1
'查看容器内网卡'
docker inspect c1 | grep -wA `docker inspect c1|wc -l` "Networks" | sed -n '/".*{$/ s/": {//p'|sed -n '2,3s/.*"//p'
net1
net2
9. 进入 c1,验证连通性
# docker exec -it c1 ping -c 3 172.10.10.1
PING 172.10.10.1 (172.10.10.1) 56(84) bytes of data.
64 bytes from 172.10.10.1: icmp_seq=1 ttl=64 time=0.170 ms
64 bytes from 172.10.10.1: icmp_seq=2 ttl=64 time=0.073 ms
64 bytes from 172.10.10.1: icmp_seq=3 ttl=64 time=0.042 ms
--- 172.10.10.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2030ms
rtt min/avg/max/mdev = 0.042/0.095/0.170/0.054 ms
10. 删除相关容器
'注意停止和删除顺序,不然无法删除'
# docker stop c1 c2 c3 h1 h2 #停止容器
# docker rm c1 c2 c3 h1 h2 #删除容器
# docker network rm net1 net2 #删除bridge