百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> docker network下令详解
分享文章到:

docker network下令详解

发布时间:09/01 来源:未知 浏览: 关键词:

我们先来看看network所有的子命令:

(引荐教程:docker教程)

docker network create
docker network connect
docker network ls
docker network rm
docker network disconnect
docker network inspect

一、创立网络

在安置Docker Engine时会主动创立一个默许的bridge网络docker0。 此外,还可以创立本人的bridge网络或overlay网络。

bridge网络倚赖于运转Docker Engine的单台主机上,而overlay网络能够覆盖运转各自Docker Engine的多主机环境中。

创立bridge网络比力简便如下:

 # 不指定网络驱动时默许创立的bridge网络
 docker network create simple-network
 # 查看网络内部信息
 docker network inspect simple-network
 # 利用到容器时,可进入容器内部使用ifconfig查看容器的网络详情

但是创立一个overlay网络就需要一些前提前提(详细操纵请参照 Docker容器网络相关内容):

- key-value store(Engine支撑Consul、Etcd和ZooKeeper等分布式储备的key-value store) 
- 集群中所有主机已经连接到key-value store 
- swarm集群中每个主机都配置了下面的daemon参数 
- –cluster-store 
- –cluster-store-opt 
- –cluster-advertise

然后创立overlay网络:

# 创立网络时,使用参数`-d`指定驱动类型为overlay
docker network create -d overlay my-multihost-network

就使用--subnet选项创立子网而言,bridge网络只能指定一个子网,而overlay网络支撑多个子网。

在bridge和overlay网络驱动下创立的网络可以指定不一样的参数。

二、连接容器

创立三个容器,离别前两个使用默许网络启动容器,第三个使用自定义bridge网络启动。 然后再将第二个容器增加到自定义网络。这三个容器的网络状况如下:

第一个容器:只要默许的docker0

第二个容器:属于两个网络——docker0、自定义网络

第三个容器:只属于自定义网络

说明:通过容器启动指定的网络会覆盖默许bridge网络docker0。

# 创立三个容器 conTainer1,container2,container3
docker run -itd --name=container1 busybox
docker run -itd --name=container2 busybox
# 创立网络mynet
docker network create -d bridge --subnet 172.25.0.0/16 mynet
# 将容器containerr2连接到创建网络mynet
docker network connect mynet container2
# 使用mynet网络来容器container3
docker run --net=mynet --ip=172.25.3.3 -itd --name=container3 busybox
 
# 查看这三个容器的网络状况
docker network inspect container1 # docker0
docker network inspect container2 # docker0, mynet
docker network inspect container3 # mynet

三、默许网络与自定义bridge网络的差别

默许网络docker0:网络中所有主机间只能用IP彼此拜访。通过--link选项创立的容器可以对链接的容器名(container-name)作为hostname停止直接拜访。

自定义网络(bridge):网络中所有主机除ip拜访外,还可以直接用容器名(container-name)作为hostname彼此拜访。

# 进入container2内部
docker attach container2
ping -w 4 container3 # 可拜访
ping -w 4 container1 # 不成拜访
ping -w 4 172.17.0.2 # 可拜访container1的IP
# Ctrl+P+Q退出容器,让container2以守护进程运转

四、默许网络与自定义bridge网络在容器连接的差异

在默许网络中使用link(legency link),有如下功效:

- 使用容器名作为hostname 
- link容器时指定alias: --link=<Container-Name>:<Alias> 
- 配合--icc=false隔离性,实现容器间的平安连接 
- 环境变量注入

自定义网络中使用docker net供给如下功效:

- 使用DNS实现主动化的名称解析 
- 一个网络供给容器的平安隔离环境 
- 动态地attach与detach到多个网络 
- 支撑与--link选项一起使用,为链接的容器供给别号(可以是尚不存在链接容器,与默许容器中–link使用的最大差异)

默许网络中的link是静态的,不同意链接容重视启,而自定义网络下的link是动态的,支撑链接容重视启(乃至IP转变)
因此,使用--link时链接的容器,在默许网络中必需提早创立好,而自定义网络下不必预先建好。

使用docker network connetct将容器连接到新网络中时,用参数--link链接雷同的容器时,可以指定不一样的别号,它们是针对不一样网络的。

# 运转容器使用自定义网络,同时使用--link链接尚不存在的container5容器
docker run --net=mynet -itd --name=container4 --link container5:c5 busybox
# 创立容器container5
docker run --net=mynet -itd --name=container5 --link container4:c4 busybox
# 虽然是雷同容器,但是在不一样的网络环境连接中可以不一样的alias链接
docker network connect --link container5:foo local_alias container4
docker network connect --link container4:bar local_alias container5

五、指定容器在网络范畴的别号(Network-scoped alias)

Network-scoped alias就是指定容器在可被统一网络范畴内的其他容器拜访的别号。

不一样于link别号的是,link别号是由链接容器的使用者供给的,只要它本人可使用; 而指定网络范畴内别号,是由容器供给给网络中其它容器使用的。

Network-scoped alias:统一网络中的多个容器可以指定雷同的别号,在使用的当然只要第一个指定别号的容器才生效,
只要当第一个容器关闭时,指定雷同别号的第二个容器的别号才会开端生效。

docker run --net=mynet -itd --name=container6 --net-alias app busybox
docker network connect --alias scoped-app local_alias container6
docker run --net=isolated_nw -itd --name=container7 --net-alias app busybox
docker network connect --alias scoped-app local_alias container7
# 在container4中
docker attach container4
ping app # 拜访container6的IP
# 从container4中以守护进程运转退出:Ctrl+P+Q
docker stop container6
docker attach container4
ping app # 拜访的container7的IP

六、断开网络与移除网络

# 容器从mynet网络中止开(它将没法再网络中的容器container3通讯)
docker network disconnect mynet container2
# 测试与容器container3失败
docker attach container2
ping contianer3 # 拜访失败

在多主机的网络环境中,在将容器用已移除的容器名称连接到网络中时会显现container already connected to network的错误,
这时需要将新容器强迫移除docker rm -f,从新运转并连接到网络中。

移除网络要求网络中所有的容器关闭或断开与此网络的连接时,才能够使用移除命令:

# 断开最后一个连接到mynet网络的容器
docker network disconnet mynet container3
# 移除网络
docker network rm mynet

以上就是docker network命令详解的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板