Docker网络笔记

发布于:2022-12-26 ⋅ 阅读:(411) ⋅ 点赞:(0)

1、所有容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用ip。

2、Docker使用的是Linux的桥接,宿主机是一个Docker容器的网桥docker0。

3、--link

# 运行一个tomcat01 --link tomcat02

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

# 用tomcat01 ping tomcat02的容器名 可以ping通

$ docker exec -it tomcat01 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 .115 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq = 2 ttl = 64 time = 0 .080 ms
# 用tomcat02 ping tomcat01 ping不通
# --link的本质就是在tomcat01的hosts配置中添加了tomcat01的映射
# 现在Docker已经不再建议使用--link了,推荐使用自定义网络 

4、自定义网络

 # docker0的特点:默认的网络,创建的容器不能使用容器名直接访问。--link可以打通连接,但是很麻烦。

# 自定义网络命令

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

# 192.168.0.0/16        16的含义是前16位固定

# 自定义网络下,服务可以用服务名相互ping通,不需要--link

5、网络连通

众所周知,一般情况下想要跨网段ping通是不太可能的。如果想要跨网络操作,需要使用docker network connect "容器名" "网络名"命令。

例子:

        docker network connect tomcat01 mynet

        #将tomcat01连接到mynet网络

原理:

        给tomcat01分配一个mynet网段的ip,使其同时拥有两个网段的ip。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到