docker network 使用

Docker 有如下网络类型 官方文档

  • bridge 多用于独立 container 之间的通讯
  • host 直接使用宿主机的网络,端口也使用宿主机的。
  • overlay 当有多个 docker 主机时,跨主机的 container 通讯
  • macvlan 每一个 container 都有一个虚拟的 mac 地址
  • none 禁用网络

默认网络

Docker 在默认状况下,会自动创建一个 bridge, 一个 host 和一个 none的网络:docker

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e5b9dbaf44ec        bridge              bridge              local
2bb7ffed7411        host                host                local
cffd99fe62bc        none                null                local

能够看到,driver类型为bridge的网络的名字也为bridge。在默认状况下,container都是使用的这个bridge的网络,此时container是能够访问外网和其余container的(须要经过IP地址)。网络

默认的名为bridge的网络是有不少限制的,为此,咱们能够自行建立bridge类型的网络。默认的bridge网络与自建bridge网络有如下区别:code

  • 端口不会自行发布,必须使用-p参数才能为外界访问,而使用自建的bridge网络时,container的端口可直接被相同网络下的其余container访问。
  • container之间的若是须要经过名字访问,须要--link参数,而若是使用自建的bridge网络,container之间能够经过名字互访。
  • 更多用户自定义 bridge 与默认 bridge 网络区别请查看官方文档

查看网络详情

docker network inspect bridge

自建 bridge 网络

场景: 当多个独立的 container 之间须要彼此访问时,推荐使用自建的 bridge 网络,而不是使用 --link文档

建立以下:

$ docker network create --driver bridge my-network
30b752110d07e30d8facb6448e76033aa430b519a8b14ce1ffd34e65054547d3

启动若干 container 并加入 my-netowkr

docker run -it --rm --name alpine1 --network my-network alpine
docker run -it --rm --name alpine2 --network my-network alpine

其中:-it 提供人机交互;--rm 关闭 container 后,容器自动删除;--name 容器显示的名称;--network 要加入的网络名称。get

container 之间相互 ping

$ docker run -it --rm --name alpine1 --network my-network alpine
/ # ping alpine2
PING alpine2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.321 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.075 ms
64 bytes from 172.19.0.3: seq=2 ttl=64 time=0.133 ms
64 bytes from 172.19.0.3: seq=3 ttl=64 time=0.077 ms

$ docker run -it --rm --name alpine2 --network my-network alpine
/ # ping alpine1
PING alpine1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.081 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.273 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.116 ms

关于更多 docker network 使用方式请查看官方文档it

相关文章
相关标签/搜索