1. Docker 是轻量级容器技术,网络部分是其薄弱的部分之一。
2. Docker自身的 4 种网络工作方式,和一些自定义网络模式。
host:创建容器与宿主机共用IP和端口,不会创建虚拟网卡和IP; 优势:就是网络 性能比较好,但是docker host上已经使用的端口就不能再用了(需要端口映射),网络的隔离性不好。
container: 创建容器与指定容器共享IP 和端口;
bridge:会为创建容器分配和设计IP, 并连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信;(docker在安装时会创建一个名为docker0的Linux bridge,在不指定--network的情况下,创建的容器都会默认挂到docker0上面。) 优势:bridge模式为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境,使容器之间,容器和docker host之间实现网络隔离。
none:关闭了容器的网络功能; 优势:封闭的网络能很好的保证容器的安全性
3. Docker 创建时候,默认网络有 3 种, 可以通过 docker network ls 查看:
4. 用 --net 选项指定容器的网络模式, 例如:
docker run --name nginx1 --net host -p 80:80 -d nginx
注意 1) 端口映射,宿主机端口在前; 2) container 模式命令特殊:docker run -d --net = container: NAME_or_ID
5. 用户自定义模式主要可选的有三种网络驱动:bridge、overlay、macvlan。bridge驱动用于创建类似于前面提到的bridge网络
举例:创建新bridge网络,并基于它创建容器。
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
docker run --name nginx1 --net mynet -p 80:80 -d nginx
验证 1) docker network ls 查看新加入网络
2)docker network inspect bridge 查看为容器分配的 IPv4Address