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<UP,BROADCAST,MULTICAST>  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<UP,BROADCAST,MULTICAST>  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<UP,BROADCAST,RUNNING,MULTICAST>  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程序,然后发出去。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • docker之容器通信 这节属于了解学习,算是烂尾,最后我也没找到合适的方式去固定容器ip,然后作为正式环境去跑,...
    道无虚阅读 10,844评论 1 7
  • 概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求。而容器的网络通信...
    糙老爷们儿吃什么樱桃阅读 9,012评论 1 5
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 5,828评论 0 7
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 13,593评论 0 120
  • 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4...
    姚兴泉阅读 3,142评论 0 0

友情链接更多精彩内容