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进程处理访问容器的流量

 

posted @ 2018-04-14 17:56  AaronCnblogs  阅读(92)  评论(0)    收藏  举报