Docker 容器网络

1. Docker 网络基本命令

docker network ls#查看网络
docker network inspect 网络#查看网络内部信息
docker network create 网络#新建网络
docker network connect 网络 容器#将容器加入到该网络中
docker network disconnect 网络 容器#断开网络
docker network rm 网络#移除网络(需要断开连接到该网络的所有容器)
docker network prune 网络#移除未使用的网络

2. 网络模式简介

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

在这里插入图片描述

2.1 host 模式

    容器和宿主机共享Network namespace
    容器和宿主机的端口不同
    外部主机与容器直接通信,网络缺少隔离性

在这里插入图片描述

2.2 Bridge 模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
IP递增且自动互补
在这里插入图片描述

2.3 none 模式

Docker容器拥有自己的Network Namespace
不为Docker容器进行任何网络配置(Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。)
容器只有lo回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

在这里插入图片描述

3.自定义网络

docker提供三种自定义网络驱动

bridge(默认)
overlay
macvlan

overlay,macvlan 用于创建跨主机网络

3.1 自定义网络

创建网络
在这里插入图片描述
创建容器并指定网络类型为自定义mynet1:同一网络中直接ping容器名称即可
在这里插入图片描述
ip addr show查看到添加了接口:IP为172.18.0.1,为其容器的网关
在这里插入图片描述
在这里插入图片描述
IP递增且自动替补
在这里插入图片描述

3.2 自定义网关、网段

创建网络:指定子网、网关

docker network create --subnet 172.20.0.0/24 --gateway 172.20.0.1 net1
--subnet:网段
--gateway:网关

创建容器,指定IP,网络类型

docker run -it --name demo1 --ip 172.20.0.10 --network net1 busybox
docker run -it --name demo2 --ip 172.20.0.20 --network net1 busybox
--ip:指定容器ip
--network:指定网络

在这里插入图片描述

3.3 不同网桥之间通信

1.创建容器
docker run -it --name demo3  busybox
2.连接网络
docker network connect net1 demo3

在这里插入图片描述

4.同一主机间通信、跨主机通信

4.1 docker 容器通信

ip通信
容器名称通信

4.1.1 joined 容器

1.创建容器web_demo(webserver包含nginx服务)
docker run -d --name web_demo webserver
2.joined容器到busybox上(busybox包含shell及基本命令的小版本环境)
docker run -it --network container:web_demo busybox

在这里插入图片描述

4.1.2 link 链接容器

1.创建容器
docker run -d --name demo nginx
2.link容器
docker run -it --link demo:nginx busybox
#当释放掉demo,开启一个demo1占用172.17.0.2后
#再开demo(IP为172.17.0.4),发现解析随之变化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 容器访问外网

SNAT(地址转发:MASQUERADE)

4.3 外网访问容器

使用docker-proxy进程通信
DNAT地址转发
docker run -d --name demo1 -p 80:80 nginx
-p:指定映射端口

在这里插入图片描述
内部访问
在这里插入图片描述
外部访问
在这里插入图片描述

4.3.1 测试

删除DNAT规则
iptables -t nat -D DOCKER 3
删除后发现依然可以访问(docker-proxy进程存在的前提下)

kill掉docker-proxy进程
kill 进程id,发现依然可以访问
(在地址转发正常的前提下)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值