docker网络(原生网络、自定义网络、容器间通信、外网访问容器、跨主机容器网络)

1.docker原生网络

docker在安装好时会有3种网络模型:bridge(默认),host,none
docker network ls
**docker在安装好后会自动新建一个docker0的接口,所有的容器都会自动桥接到docker0 上 **
在这里插入图片描述
在这里插入图片描述


1.1 桥接模式

桥接模式下容器没有公共ip,只有宿主机可以访问,外部主机不可见。
容器要访问外网必须通 过宿主机的NAT规则,所以在物理机上需要打开ip_forward路由转发功能。
容器启动时,默认会生成一个网络对,一头连接容器,一头连接docker0,类似于网线的两端,实现了容器和宿主机的数据互通。

docker run -d --name nginx nginx
brctl show 可以看到桥接到了docker0上
在这里插入图片描述
在这里插入图片描述


1.2 host模式

host模式可以让容器共享宿主机的网络栈,可以让外部直接与容器通信,但是少了容器网络的隔离性。
docker run -it --name vm1 --network host ubuntu在容器内执行ipaddr,看到和宿主机一样的网卡信息
ip addr ##发现确实和容器内看到的一致

在这里插入图片描述

1.3 none模式(禁用网络模式)

有一些应用不需要连接外网,或者存放的数据是重要或秘密数据,可以使用none模式
docker run -it --name vm2 --network none ubuntu在容器内执行ipaddr,可以看到只有一个lo接口
在这里插入图片描述


2.docker自定义网络

三种网络驱动:
1.bridge(自定义的bridge带dns解析功能,可以 直接使用vm1vm2这种名字去访问,不一定要使用ip)
2.overlay
3.macvlan,后面两种用 于跨主机的网络,也就是集群等)

2.1 创建自定义网络

docker network create --help ##可以看到如果不指定驱动,默认使用bridge
docker network create -d bridge my_net1 创建一个名为 my_net1的自定义网络
docker network ls
docker run -it --name vm1 --network my_net1 ubuntu 运行容器, 可以看到分配了一个172.18网段的ip,容器的ip是单调递增,网段也是
docker network inspect my_net1

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


2.2 自定义网段、网关

docker network create -d bridge --subnet 172.22.0.0/24 --gateway 172.22.0.1 my_net2 指定子网和网关
docker network ls
docker run -it --name vm2 --network my_

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使 Docker 容器能够访问容器外的网络,有几种方法可以实现: 1. 使用桥接网络模式:默认情况下,Docker 容器使用的是桥接网络模式(bridge)。在这种模式下,Docker主机上创建一个虚拟网桥(docker0),并将容器连接到该网桥上。通过桥接网络容器可以与宿主机和其他容器进行通信,并通过宿主机网络接口访问外部网络。 2. 使用主机网络模式:通过使用主机网络模式(host),可以使容器直接使用宿主机网络栈,与宿主机共享网络命名空间。这样容器就可以直接访问宿主机上的网络接口,并与外部网络进行通信。使用主机网络模式可以提高容器网络性能,但也会牺牲容器之间的隔离性。 3. 使用端口映射:通过使用端口映射,可以将容器内部的端口映射到宿主机上的一个端口。这样,外部网络就可以通过宿主机上的端口访问容器内部的服务。可以使用 `-p` 参数来指定端口映射规则,例如 `docker run -p 8080:80` 将容器内部的 80 端口映射到宿主机的 8080 端口。 4. 使用自定义网络Docker 允许创建自定义网络,并将容器连接到该网络上。在自定义网络中,容器可以通过网络别名或容器名称进行通信。通过自定义网络,可以将容器组织成逻辑网络,使其能够相互访问并与外部网络进行通信。 这些方法可以根据实际需求选择使用。根据容器的具体场景和要求,选择合适的网络模式和配置来实现容器外部网络的通信。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值