Docker网络类型

Docker网络模式

查看容器的详细信息(可以查看网络类型Networks)

docker container inspect 容器ID
[root@controller ~]#   docker network ls
NAME                DRIVER              SCOPE
bridge              bridge              local
host                host                local
none                null                local
  • bridge(桥接式网络)(默认)

启动容器时,首先会在主机上创建一个docker0的虚拟网桥,相当于交换机,同时自动分配一对网卡设备,一半在容器(eth0),一半在宿主机,并且还关联到了docker0,从而进行连接。
每创建一个容器启动时自动分配地址以后会生成iptables规则,iptables -t nat -vnL 查看postrouting ,从任何接口进来,只要不从docker0跳出去,源地址任何网络地址,无论到达任何主机,都要做地址伪装,自动选择主机物理源地址

iptables -t nat -vnL|grep docker

Chain POSTROUTING (policy ACCEPT 156 packets, 9745 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   30  1886 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0   
查看方法:
[root@controller ~]# brctl show
bridge  name    bridge id       STP enabled interfaces
brq4f42285e-8b  8000.000c29e8da73   no      eth0
                                           tap87373210-e1
docker0           8000.024233cedda5 no      veth1fc99ac
可以看到和本地连接
软件包:
yum install bridge-utils -y

Container(K8S会常用)
  • 与另一个运行得容器共用一个网络Network Namespace
    --network=container:容器ID
例子:
默认先起一个容器:
docker run -d phpwind:v1
随便启一个容器共用phpwind:v1的网络
docker run -it --network container:2735c9b78546 nginx
这时nginx容器和phpwind的ip都是相同的 ,同样谁先占用80端口就是谁的

##查看网络类型
docker inspect nginx容器ID |grep -i network
  NetworkMode
  • host (主机)
  • 与宿主机共用一个网络
    --network=host
例子:(使用后不需要做端口映射)
性能最高,端口谁先占用就是谁的
docker run --network=host -d phpwind:v1
  • none (空)
  • 不为容器配置任何网络功能
    --network=none 不使用任何网络类型
例子:
docker run --network=none -d phpwind:v1 /bin/bash
没有网络适合联系使用,只有基础命令

你可能感兴趣的:(Docker网络类型)