docker,学习

每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了veth-pair

技术!

每启动一个容器,linux主机就会多了一个虚拟网卡。

结论:tomcat1和tomcat2共用一个路由器。是的,他们使用的一个,就是docker0。任何一个容器启动

默认都是docker0网络。

docker默认会给容器分配一个可用ip。

小结

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据

Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网

关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接

通信。

image-20221014223426426

--link

docker run -d -P --name tomcat03 --link tomcat02 tomcat

03能ping通02,02不能ping通o3

本质是修改了hosts文件

[root@kuangshen ~]# 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.18.0.3 tomcat02 b80da266a3ad # 发现tomcat2直接被写在这里 
172.18.0.4 a3a4a17a2b70

\# 所以这里其实就是配置了一个 hosts 地址而已! 
\# 原因:--link的时候,直接把需要link的主机的域名和ip直接配置到了hosts文件中了。

--link早都过时了,我们不推荐使用!我们可以使用自定义网络的方式

自定义网络

image-20221014231551202

所有网路模式

网络模式配置说明
bridge模式--net=bridge默认值,在Docker网桥docker0上为容器创建新的网络栈
none模式--net=none不配置网络,用户可以稍后进入容器,自行配置
container模式--net=container容器和另外一个容器共享Network namespace。kubernetes中的pod就是多个容器共享一个Network namespace。
host模式--net=host容器和宿主机共享Network namespace
用户自定义--net=自定义网络用户自己使用network相关命令定义网络,创建容器的
# 创建自定义网络
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

docker run -d -P --name tomcat-net-02 --net mynet tomcat

# 容器间可以通过名字相互ping通
docker exec -it tomcat-net-01 ping 192.168.0.3

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

网络连通

把两个不同网段的容器连通

image-20221014233119363

使用docker network connect

image-20221014233241854

docker network connect mynet tomcat01

实质是把这个容器加入了这个网络,即一个容器两个ip

微信支付

微信支付

支付宝支付

支付宝支付

评论

This is just a placeholder img.