docker --网络详解

目录

一、docker原生网络

1、bridge网络

​2、host 模型

​ 3、none网络

​二、docker自定义网络

1、bridge网络

​2、 创建自定义网桥

​三、docker容器间的通信

1、容器通信

​container模式 

link模式

跨主机通信

四、跨主机容器网络 

1、macvlan网络方案实现


Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

一、docker原生网络

1、bridge网络

bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机是不可见的。 容器通过宿主机的NAT规则后可以访问外网。

docker network ls
cd harbor/
 ls
docker-compose down ##停止容器
docker network ls ##docker的原生网络有三个

docker安装后会自动创建3种网络:bridge、host、none 

ip addr #docker安装后有一个docker0的桥接口

docker run -d --name demo nginx ##开启新容器
docker ps 

yum install -y bridge-utils

brctl show ##可以看到容器网络桥接到宿主机docker0上

 docker inspect demo ##查看容器的信息

看到容器的网关为172.17.0.1,

#可以看到容器已经被分到一个ip地址【docker0网络端默认地址是172.17】

##注意ip分配是单调递增的

iptables -t nat -nL  #有一个伪装

【容器通过桥接到达宿主机,宿主机通过l路由功能到达eth0出去,出去做了伪装】

172.17 为所有容器的地址,其他容器地址是以单调递增的方式动态分配的,谁启谁用

2、host 模型

host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。

docker run -d --name demo2 --network host nginx ##-d 打入后台
docker ps
brctl show 

docker inspect demo2

没有网关和 ip地址

docker exec -it demo2 bash  ##进入demo2可以看到容器内
docker rm -f demo2
docker run -it --name demo2 --network host busybox ##运行busybox打开终端
docker ps -a
docker rm -f demo
docker rm -f demo2
docker run -d --name demo --network host nginx ##运行demo
ip addr ##没有新建网络

可以看到跟宿主机的ip一样

在docker2上直接访问dokcer1

brctl show
netstat -antlp
systemctl status nginx
docker rm -f demo

容器开启占用的80端口

本机没有开nginx 

停掉之后外部不能访问

3、none网络

 none模式是指禁用网络功能,只有lo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值