Docker网络

# 删除所有容器

docker rm -f ${docker ps -aq}

# 删除所有镜像  -a 显示所有镜像  -q 只显示镜像ID

docker rmi -f ${docker images -aq}

1. Docker0

查看网络

1.查看本机网络

# 查看本机网络

ip addr

# lo    127.0.0.1本机回环地址
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
# eth0  172.28.176.102阿里云的内网地址       
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:27:25:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.28.176.102/20 brd 172.28.191.255 scope global dynamic eth0
       valid_lft 313708314sec preferred_lft 313708314sec
# docker0 172.17.0.1容器内地址
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:61:97:3d:71 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

2. 查看容器内地址

docker run -d -P --name tomcat01 tomcat:9

# 查看容器tomcat01的内部网络地址

  docker exec -it tomcat01 ip addr

无法查看网络,则先安装命令

 # 安装命令
[root@Link ~]# docker exec -it tomcat01 /bin/bash

# 由于网络问题,安装会较慢
root@d06f08f707fa:/usr/local/tomcat# apt update && apt install -y iproute2
root@d06f08f707fa:/usr/local/tomcat# apt-get install net-tools
root@d06f08f707fa:/usr/local/tomcat# apt-get install iputils-ping
root@d06f08f707fa:/usr/local/tomcat# exit

密码安装后再次查看容器内部网络地址

docker exec -it tomcat01 ip addr

 Linux能ping通容器内部

宿主机能够ping通容器内部

ping 172.17.0.3

veth-pair技术

        当我们每启动一个容器,docker就给对应容器分配一个eth0,并能够桥接到docker0网卡。这个时候可以把docker0看作为路由器,每个容器可以看作为连接路由器的网络设备,docker0用来管理每个容器的和docker0通信的映射关系。 

        当我们的服务器成功安装docker并启动进程后,就会产生一个docker0的虚拟网桥,本质为Linux网桥(默认为桥接模式),使用的通信技术是Veth-pair技术。 veth-pair就是一对虚拟设备接口,它们都是成对出现的,一端连着协议,一端彼此相连,所以可以通信。正因为这个特性,veth-pair可以充当一个桥梁,连接各种虚拟网络设备。

容器之间相互ping通 

#  容器和容器之间是可以互相ping通的 

docker exec -it tomcat01 ping 172.17.0.5

        tomcat01和tomcat02是共用的一个路由器即docker0。 所有的容器在不指定网络的情况下,都是docker0路由的,docker0会给我们的容器分配一个默认的可用ip。Docker中的所有网络接口都是虚拟的,因为虚拟的转发效率高。但是只要容器删除 docker rm -f 容器ID,则对应网桥一对也会一并删掉。

自定义网络

 默认情况下,容器间不能够通过容器名进行ping

# 容器之间能够通过IP进行ping通

docker exec -it tomcat01 ping 172.17.0.5

#容器间不能够通过容器名进行ping

docker exec -it tomcat01 ping tomcat02

网络模式

none: 不配置网络 (一般不用)

container:容器内网络连通(一般不用)

host: 与宿主机共享网络

bridge:桥接模式 (默认使用,适合自定义网络)

docker run -d -P --name tomcat01 tomcat:9
# 等价于  加上--net bridge
docker run -d -P --name tomcat01 --net bridge tomcat:9
# 此处使用的是docker0,特点为:默认的,域名不能访问

常用命令

#列出Docker主机上的全部网络

docker network ls

# 移除指定的网络

docker network rm 网络名

#查看网络

docker network inspect 网络名 

# 创建网络

docker network create --d 网络驱动类型 --subnet 子网范围 --gateway 网关地址 网络名

# 将容器连接到网络,例如跨网络操作

docker network connect 网络名 容器名

# 断开容器的网络
docker network disconnect 网络名 容器名


# 删除全部未使用的网络
docker network prune

容器互联

创建网络

# 创建网络
# --driver bridge 可不写,默认桥接模式
# --subnet 192.168.0.0/16 IP范围:192.168.0.2 ~ 192.168.255.255 总数:255*255个
# --gateway 192.168.0.1 设置网关

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

启动容器并制定自定义网络

 启动容器并制定自定义网络

 docker run -d -P --name tomcat_net_01 --net mynet tomcat:9 

 docker run -d -P --name tomcat_net_02 --net mynet tomcat:9 

 容器间能通过容器名进行ping

使用自定义网络的容器之间,可以使用IP进行ping,也可以使用容器名进行ping

# 通过ip进行ping

docker exec -it tomcat-net-01 ping 192.168.3

# 通过容器名进行ping

docker exec -it tomcat-net-02 ping tomcar-net-02

优势

Docker自定义网络的优势:

1.隔离容器:每个Docker网络都是独立的,可以限制哪些容器可以通信。

2.静态IP分配:可以为容器分配静态IP,方便部署和配置。

3.跨主机通信:使用自定义网络,容器可以跨多个主机通信

网络连通

将容器 tomcat01连接到网络

docker network connect 网络名 容器名

# 启动容器,不指定网络,使用默认的docker0

docker run -d -P --name tomcat01 tomcat:9 

docker run -d -P --name tomcat02 tomcat:9

# 容器间不能够通过容器名进行ping

# 将容器tomcat01连接到网络,进行网络连通

docker network connect mynet tomcat01

# 容器间能够通过容器名进行ping

docker exec -it tomcat01 ping tomcat-net-01

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值