Docker的网络模式
Docker的网络模式
一、Docker 网络
1.1 Docker 网络实现原理
Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直接通信。
Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。
1.2 为容器创建端口映射
端口映射,底层原理实际是做了一个DNAT转换。
1. 随机映射端口(从32768开始)
格式:docker run -itd --name=为容器指定名称 -P 镜像名称
#随机映射端口
docker run -itd --name web1 -P nginx
#查看映射端口号
docker ps -a
#使用宿主机IP:映射端口访问测试
curl http://192.168.44.20:49154
2. 指定映射端口
格式:docker run -itd --name=为容器指定名称 -p 宿主机端口 镜像名称
#指定映射端口,将容器的80端口映射到宿主机的48888端口
docker run -itd --name web2 -p 48888:80 nginx
#使用宿主机IP:映射端口访问测试
curl http://192.168.44.20:48888
端口映射,底层原理实际是做了一个DNAT转换。
192.168.41.46:49154 映射到 172.17.0.2:80,
192.168.41