docker学习笔记-docker网络

1.默认网络docker0

只要下载docker,默认回创建一个docker0的虚拟网卡
每启动一个容器,docker就回给容器分配一个ip,使用桥接模式进行连接(veth-pair)
每次启动会在容器内部和主机部分个增加一个网卡
(成对出现 267-266 277-276)

# 我们发现这个容器带来网卡,都是一对对的。
# veth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连。
# 正因为有这个特性,evth-pair充当一个桥梁,连接各种虚拟网络设备的。
# openstack,Docker容器之间的连接,OVS的连接,都是使用veth-pair技术。

ps:容器之间可以互相连通,docker0相当于公用的路由器

使用名称代替IP地址实现高可用

docker network ls 可以查询所有的网络id
docker network inspect 网络id 查询网络的详细信息

# 通过服务名ping不通;如何解决?
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker exec -it tomcat02 ping tomcat01
ping: tomcat01: Name or service not known
# 通过--link可以解决网络连接问题。
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker run -d -P --name tomcat03 --link tomcat02 tomcat:7.0
2393eecb870e5755068ea8b7d8bdcdd0f1ff110534c3359384413677c651bec4
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker exec -it tomcat03 ping tomcat02
PING tomcat02 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.085 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.055 ms
# 反向可以ping通吗?(不可以)
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker exec -it tomcat02 ping tomcat03
ping: tomcat03: Name or service not known

tomcat03配置在Tomcat02的host文件中

# 查看
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# 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.3      tomcat02 20398a94efa7
172.17.0.4      2393eecb870e

建议使用自定义网络,使用--link太过于麻烦,无法面对复杂的场景但是docker0不支持容器名连接访问

3.自定义网络

查看docker所有的网络

网络模式
bridge:桥接 docker(默认,自己创建也使用bridge桥接模式)
none:不配置网络
host:和主机共享网络
container:容器网络连通!(用的少!局限很大)

# 我们直接启动的命令--net bridge(这个就是我们的docker0);默认带上这个参数的,以下两种启动方式效果一致。
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --het bridge tomcat
# docker0特点:默认,域名不能访问,--1ink可以打通连接!
# 我们可以自定义一个网络!
# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
7254ffccbdf5   bridge    bridge    local
45610891738f   host      host      local
266acd66473c   mynet     bridge    local
7795cbc2686c   none      null      local

创建容器都加入自定义网络则可以互相连通

[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat:7.0
[root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat:7.0

redis -不同的集群使用不同的网络,保证集群是安全和健康的
mysql -不同的集群使用不同的网络,保证集群是安全和健康的

4.网络连通

、、、

容器加入自定义网络

使用docker network 自定义网络名称 容器名称
实现跨网络访问
、、、

posted @ 2022-09-14 17:42  zhang790  阅读(64)  评论(0)    收藏  举报