Docker网络
查看docker网络:docker network ls
none
只有lo网卡
如:docker run -it --network=none ubuntu
host
与Host共享网卡,配置完全相同,端口共用。hostname也是Host的。
如:docker run -it --network=host ubuntu
bridge
Docker安装时创建一个docker0的linux bridge,容器默认挂到docker0上。
在Host上查看网桥列表信息:brctl show;查看网桥IP配置:ifconfig docker0
创建容器时,生成一对网卡,连接网桥和容器。容器的IP地址在网桥子网内分配。
查看网桥配置子网Subnet、网关Gateway:docker network inspect bridge
根据驱动自定义网络
bridge
如:docker network create --driver bridge mynet //创建新的网桥
在Host上查看网桥信息:brctl show;查看网桥配置:docker network inspect mynet
创建时指定子网和网关,如:docker network create --driver bridge --subnet 172.22.16.0/16 --gateway 172.22.16.1 mynet
启动容器时使用自定义网络:docker run -it --network=mynet ubuntu
指定静态IP:docker run -it --network=mynet --ip 172.22.16.8 ubuntu //只有使用--subnet创建的自定义网络才能指定静态IP
overlay
macvlan
IP通信
同一网桥下的容器可以通信;
不同网桥需要通过路由通信:
查看Host上的路由表:ip r
查看ip forwarding是否启用:sysctl net.ipv4.ip_forward
查看iptables:iptables-save
为容器添加网卡:docker network connect mynet <container>
DNS Server
为容器命名:docker run -it --network mynet --name c1 ubuntu
直接通过容器名称ping:ping c1 //只能在自定义网络中使用
joined容器
docker run -d --name=web1 httpd
docker run -it --network=container:web1 busybox //joined容器共享网卡和配置信息,通过127.0.0.1访问web1
适合高效通信或监控流量
容器通过NAT访问Host网络。
容器将服务端口映射到Host端口,外网访问容器。如:docker run -d -p 80 httpd //映射容器的80端口到Host的随机端口
查看端口映射:docker port <container>
docker run -d -p 8080:80 httpd //将容器的80端口映射到Host的8080端口
每一个映射的端口,Host启动一个docker-proxy进程处理访问容器的流量

浙公网安备 33010602011771号