本文摘自PHP中文网,作者V,侵删。

我们先来看看network所有的子命令:
(推荐教程:docker教程)
1 2 3 4 5 6 | 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网络比较简单如下:
1 2 3 4 5 | # 不指定网络驱动时默认创建的bridge网络
docker network create simple-network
# 查看网络内部信息
docker network inspect simple-network
# 应用到容器时,可进入容器内部使用ifconfig查看容器的网络详情
|
但是创建一个overlay网络就需要一些前提条件(具体操作请参考Docker容器网络相关内容):
1 2 3 4 5 6 | - key-value store(Engine支持Consul、Etcd和ZooKeeper等分布式存储的key-value store)
- 集群中所有主机已经连接到key-value store
- swarm集群中每个主机都配置了下面的daemon参数
- ?Ccluster-store
- ?Ccluster-store-opt
- ?Ccluster-advertise
|
然后创建overlay网络:
1 2 | # 创建网络时,使用参数`-d`指定驱动类型为overlay
docker network create -d overlay my-multihost-network
|
就使用--subnet选项创建子网而言,bridge网络只能指定一个子网,而overlay网络支持多个子网。
在bridge和overlay网络驱动下创建的网络可以指定不同的参数。
二、连接容器
创建三个容器,分别前两个使用默认网络启动容器,第三个使用自定义bridge网络启动。 然后再将第二个容器添加到自定义网络。这三个容器的网络情况如下:
第一个容器:只有默认的docker0
第二个容器:属于两个网络――docker0、自定义网络
第三个容器:只属于自定义网络
说明:通过容器启动指定的网络会覆盖默认bridge网络docker0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 创建三个容器 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相互访问。
1 2 3 4 5 6 | # 进入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网络在容器连接的差别
阅读剩余部分
相关阅读 >>
如何通过命令行查看Docker服务是否已启动
如何解决在centos中安装Docker失败
如何删除Docker中的容器
Docker怎么更改镜像仓库
如何查看Docker中mysql的版本
win7怎么安装Docker?
如何查看一个Docker镜像有哪些版本
Docker的主要特性有哪些
Docker服务启动失败怎么办
Docker手动添加网桥方法详解
更多相关阅读请进入《Docker》频道 >>
转载请注明出处:木庄网络博客 » docker network命令详解