1.Docker容器默认通信模式
Dokcer默认通过使用 Linux 桥接提供容器之间的通信,docker0 桥接接口的目的就是方便 Docker 管理。当 Docker daemon 启动时需要做以下操作:
creates the docker0 bridge if not present
# 如果 docker0 不存在则创建
searches for an IP address range which doesn’t overlap with an existing route
# 搜索一个与当前路由不冲突的 ip 段
picks an IP in the selected range
# 在确定的范围中选择 ip
assigns this IP to the docker0 bridge
# 绑定 ip 到 docker0
2.Docker容器四种网络模式
docker run 创建 Docker 容器时,可以用 --net 选项指定容器的网络模式,Docker 有以下 4 种网络模式:
host 模式,使用 --net=host 指定。
container 模式,使用 --net=container:NAME_or_ID 指定。
none 模式,使用 --net=none 指定。
bridge 模式,使用 --net=bridge 指定,默认设置。
host模式:容器和宿主机共享Network namespace
container模式:容器和另外一个容器共享Network namespace,kubernetes中的pod就是多个容器共享一个Network namespace
none模式:容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等
bridge模式:Bridge模式是Docker的默认模式
3.Docker网络映射
3.1 随机映射(docker run -P): Docker服务自动分配随机端口映射
访问本地192.168.56.11:10001查看(可以使用docker port 命令查看容器端口映射),随机映射生产中很少用,测试环境好用,IP不会冲突。
3.1 指定映射(docker run -p):指定映射端口(或IP地址+端口)来映射
● 主要有以下五种方式(最常用为前两种)
-p hostPort:containPort :指定端口映射
-p ip:hostPort:containerPort :指定IP+端口映射
-p ip::containerPort :指定IP不指定端口映射,端口随机分配
-p hostPort:containerPort:udp :指定协议映射(默认为TCP协议)
-p 443:443 -p 82:80 :指定多个端口映射
IP地址+端口映射到本地80端口,访问本地192.168.56.11:81查看
指定多个端口映射
◎参考:
https://opskumu.gitbooks.io/docker/content/chapter6.html
http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-practice