Docker 容器的网络连接 & 容器互联

1. Docker 容器网络基础架构

Docker0

ifconfig查看到的 docker0 是linux的虚拟网桥(OSI数据链路层)

docker0 地址划分:
172.17.42.1 255.255.0.0
总共提供65534个地址

修改docker0 IP池
sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0

网桥管理工具:bridge-utilssudo brctl show查看网桥设备。添加虚拟网桥:sudo brctl addrbr br0,更改docker的启动配置:在/etc/default/docker中添加DOCKER_OPS值: -b=br0即可。

linux虚拟网桥特点:可以设置IP地址,相当于拥有一个隐藏的虚拟网卡

2. Docker 容器的互联

  • docker在默认时是允许所有容器连接
  • docker拒绝容器间互联
  • 允许特定容器互联

-icc=true默认允许容器互相连接

通常重启容器IP会改变,随容器启动而改变!

docker run --link=[CONTAINER_NAME]:[ALIAS] [IMAGE] [COMMAND]以指定代号访问容器,可避免IP变化带来的影响,在容器中即可以用别名访问容器(修改了host和改变了env)。(官方不推荐,使用docker network)

  • 特定容器访问:
  1. --icc
  2. --iptable=true(允许添加到iptable中)
  3. --link

3. Docker 容器与外部网络的连接

1.ip_forward

--ip-forward=true决定系统是否转发流量

sysctl net.ipv4.conf.all.forwarding查看数据转发是否开启

2.iptables包过滤防火墙系统,允许端口映射访问,限制IP访问容器

  • 表table
  • 链chain
  • 规则rule

filter表中包含的链:

  • INPUT
  • FORWARD
  • OUTPUT

查看filter表(默认):
sudo iptables -L -n

添加一条限制访问:
sudo iptables -I DOCKER -s 源IP -d 目的IP -p TCP(协议) --dport 80(端口) -j DROP(操作)

原文地址:https://www.cnblogs.com/boxker/p/10626005.html