Docker网络模式

传统网络

none网络

这种网络模式下容器只有lo回环网络,没有其他网卡。none网络可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

host网络

通过命令–network=host指定,使用host模式的容器可以直接使用docker host的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

bridge网络

容器的默认网络模式,docker在安装时会创建一个名为docker0的Linux bridge,在不指定–network的情况下,创建的容器都会默认挂到docker0上面。

  • Configure container DNS
    普通的brdge网络的container挂载宿主机的三个文件
	root@f38c87f2a42d:/# mount
	...
	/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
	/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
	/dev/disk/by-uuid/1fec...ebdf on /etc/resolv.conf type ext4 ...
	...

–dns=IP_ADDRESS…, --dns-search=DOMAIN…, or --dns-opt=OPTION…命令可以为容器添加dns服务
其中resolv.conf为空,会补入Google的dns,docker守护进程会watch宿主机上的文件变动,已达到动态更新容器内的文件。

  • Embedded DNS server
    Docker守护进程运行一个嵌入式DNS服务器,该服务器在连接到相同用户定义网络的容器之间提供DNS解析,以便这些容器可以将容器名称解析为IP地址。如果嵌入式DNS服务器无法解析请求,则将其转发到为容器配置的任何外部DNS服务器。为了在创建容器时实现这一点,容器的resolv.conf文件中只列出127.0.0.11可访问的嵌入式DNS服务器。

  • 默认网桥和自建网桥的resolv.conf文件中的namespace不同,以至于默认的桥接网络没有docker dns server,在用户定义的桥接网络中,可以直接通过“容器名”通信。

  • docker-compose会默认新建一个bridge网络,名称为 目录名_bridge

container网络

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

--net=container:test

集群网络

overlay网络

请参考此文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值