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
docker network inspect bridge
场景: 当多个独立的 container 之间须要彼此访问时,推荐使用自建的 bridge 网络,而不是使用 --link
,文档
$ docker network create --driver bridge my-network 30b752110d07e30d8facb6448e76033aa430b519a8b14ce1ffd34e65054547d3
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
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