docker 系列(五) - 网络和存储

网络

docker network ls :可以查看docker有哪些网络。

[root@VM_centos ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
78c42baf28ef        bridge              bridge              local
1db606f36f61        host                host                local
717d0aafe538        none                null                local

--network= 运行容器的时候用network参数可以指定运行哪一种网络。

[root@VM_centos ~]# docker run -it --network=none busybox
none网络

不挂任何网卡,只有一个回环网络,也就是说只有docker容器自己才可以访问,其它docker或者外网都不可以访问。适用于无外网需求且安全性比较高的网络。

/ # ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

host

和宿主机共用一个网络地址,网络配置和宿主机一模一样。

bridge

宿主机安装Docker服务时会创建一个 命名为 docker0 的网桥。如果不指定–network,创建的容器默认都会挂到 docker0 上,也就是说在同一个网段。

[root@VM_centos ~]# ifconfig
docker0: flags=4099  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:81:eb:c2:75  txqueuelen 0  (Ethernet)
        RX packets 44695  bytes 3016158 (2.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 52558  bytes 133682121 (127.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
自定义网络

docker network create --driver bridge mybridge
-- 如果便创建一个网桥名为mybridge的网络

[root@VM_90_159_centos ~]# ifconfig
br-5636da1dfd13: flags=4099  mtu 1500
        inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255
        ether 02:42:45:71:e5:b5  txqueuelen 0  (Ethernet)
        RX packets 2316  bytes 173571 (169.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2711  bytes 13314288 (12.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4163  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:81:eb:c2:75  txqueuelen 0  (Ethernet)
        RX packets 47016  bytes 3157613 (3.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 55274  bytes 146996787 (140.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

-- 查询网络会发现多了一个br-5636da1dfd13的网桥。

docker run -it --network mybridge centos
-- 运行docker容器,并把网络设为mybridge 。

docker之间网络互通?

同一个网络中的不同docker容器就能互通;不同网络中的不同docker容器不能互通。
比如一个172.18.0.1网段的docker容器,一个 172.17.0.1 网段的docker容器是不能互通的,如果想互通,需要把另外一台docker容器添加到相同的网络中,比如:
docker network connect mybridge fbff14cb396f

docker和外界联系

NAT,网络地址转换。docker把包发出去给外界,网桥会把包中的源地址替换成host地址。

外界与docker联系

端口映射。外界把包发给docker,目标地址用的是host的地址,host再根据端口号,根据端口映射找到对应的docker程序,然后发出去。

你可能感兴趣的:(docker 系列(五) - 网络和存储)