设为首页 收藏本站
查看: 827|回复: 0

[经验分享] 使用 Docker 容器网络

[复制链接]

尚未签到

发表于 2018-5-28 12:34:12 | 显示全部楼层 |阅读模式
使用 Docker 容器网络
Docker 容器网络概述
  要构建具有安全的一致行为的 Web 应用程序,可以使用 Docker 网络特性。根据定义,网络为容器实现了完全隔离。因此,控制应用程序所在的网络很重要。Docker 容器网络为您提供了这种控制能力。
本文概述 Docker 引擎交付原生的默认网络行为,介绍默认创建的网络类型,以及如何创建您自己的、用户定义的网络。

安装 Docker 时,会自动创建 3 个网络。使用 docker network ls命令列出这些网络。
$ docker network ls
NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                null
cf03ee007fb4        host                host

  这 3 个网络包含在 Docker 实现中。运行一个容器时,可以使用 the --net标志指定希望在哪个网络上运行该容器。您仍然可以使用这 3 个网络。

  • bridge 网络表示所有 Docker 安装中都存在的 docker0 网络。除非使用 docker run --net=选项另行指定,否则 Docker 守护进程默认情况下会将容器连接到此网络。在主机上使用 ifconfig命令,可以看到此网桥是主机的网络堆栈的一部分。/
  • none 网络在一个特定于容器的网络堆栈上添加了一个容器。该容器缺少网络接口
  • host 网络在主机网络堆栈上添加一个容器。您可以发现,容器中的网络配置与主机相同。
用户定义的网络
  创建自己的用户定义网络来更好地隔离容器。Docker 提供一些默认网络驱动程序来创建这些网络。可以创建一个新 bridge 网络或覆盖一个网络。也可以创建一个网络插件或远程网络并写入自己的规范中。可以创建多个网络。可以将容器添加到多个网络。容器仅能在网络内通信,不能跨网络进行通信。一个连接到两个网络的容器可与每个网络中的成员容器进行通信。当一个容器连接到多个网络时,外部连接通过第一个(按词典顺序)非内部网络提供。
创建一个覆盖 Docker 网络
  Docker 默认情况下会创建一个与 docker0网桥对应的 bridge 网络。您也可以创建自己的网络。docker network命令有许多选项可用来管理网络。
[root@localhost ~]# docker network create test-network
e2f569d57eb8506602fdfc3e8a20b12073782dcfd6046ce4ef76de8db3275d21  
[root@localhost ~]# docker network inspect test-network
[
   {
       "Name": "test-network",
       "Id": "e2f569d57eb8506602fdfc3e8a20b12073782dcfd6046ce4ef76de8db3275d21",
       "Scope": "local",
       "Driver": "bridge",
       "IPAM": {
           "Driver": "default",
           "Config": [
               {}
           ]
       },
       "Containers": {},
       "Options": {}
   }
]  
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER
e12f674fea62        bridge              bridge              
0151f24befe9        host                host               
e2f569d57eb8        test-network        bridge             
e72a1d986a84        none                null

  另外,还可以采用其他一些选项,比如 --subnet、--gateway和 --ip-range。可以使用 docker network – help或 docker network [COMMAND] – help命令查看更多信息。
  可以通过在创建容器时显式提及某个网络,从而将容器连接到该网络。
[root@localhost ~]# docker run -itd --name=test1 --net=test-network ppc64le/busybox /bin/sh
7699fe682353835166482d1416a70f0361ddf88940bd7102e2f84f6d46b3d113
[root@localhost ~]# docker network inspect test-network
[
   {
       "Name": "test-network",
       "Id": "e2f569d57eb8506602fdfc3e8a20b12073782dcfd6046ce4ef76de8db3275d21",
       "Scope": "local",
       "Driver": "bridge",
       "IPAM": {
           "Driver": "default",
           "Config": [
               {}
           ]
       },
       "Containers": {
           "7699fe682353835166482d1416a70f0361ddf88940bd7102e2f84f6d46b3d113": {
               "EndpointID": "cf1f3e319a1c1ec83c3eaf0d5380b9ee50c1f2d37e713425996ada6788f8e77a",
               "MacAddress": "02:42:ac:12:00:02",
               "IPv4Address": "172.18.0.2/16",
               "IPv6Address": ""
           }
       },
       "Options": {}
   }
]

  也可以动态地将容器连接到网络。
[root@localhost ~]# docker run -itd --name=test2 ppc64le/busybox /bin/sh
69d79cddbdf8a920d24993bfc16e8d064479327d8cc23f10ae25e96a2b9b057a

[root@localhost ~]# docker network connect test-network test2
[root@localhost ~]# docker network inspect test-network
[
   {
       "Name": "test-network",
       "Id": "e2f569d57eb8506602fdfc3e8a20b12073782dcfd6046ce4ef76de8db3275d21",
       "Scope": "local",
       "Driver": "bridge",
       "IPAM": {
           "Driver": "default",
           "Config": [
               {}
           ]
       },
       "Containers": {
           "69d79cddbdf8a920d24993bfc16e8d064479327d8cc23f10ae25e96a2b9b057a": {
               "EndpointID": "5dc4877e71eca2243167e97153d56c5334d98991fcc3eb2f7f968d0b68416255",
               "MacAddress": "02:42:ac:12:00:03",
               "IPv4Address": "172.18.0.3/16",
               "IPv6Address": ""
           },
           "7699fe682353835166482d1416a70f0361ddf88940bd7102e2f84f6d46b3d113": {
               "EndpointID": "cf1f3e319a1c1ec83c3eaf0d5380b9ee50c1f2d37e713425996ada6788f8e77a",
               "MacAddress": "02:42:ac:12:00:02",
               "IPv4Address": "172.18.0.2/16",
               "IPv6Address": ""
           }
       },
       "Options": {}
   }
]

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482221-1-1.html 上篇帖子: 【VMCloud云平台】拥抱Docker(八)Mesos入门 下篇帖子: centos7 docker容器(三)自动地建造和管理客户Docker映像文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表