0912_docker学习(8)

193 阅读2分钟

docker network 是一个抽象层,连接到网络的容器能够去获得唯一的 IP 地址,该 IP 地址可以通过网络连接到其他的容器。

使用 docker network ls 可以查看当前存在的网络。 默认情况下,docker 包含三个网络,他们分别由不同的驱动程序提供。其中 bridge driver(网桥)提供了容器之间互相连接的能力。host driver 提供了容器与主机之间相连接的能力。 null driver 则提供容器与外部隔绝连接的能力。

其中 scope 表示网络的作用范围,有三个值: local global swarm。默认是 local 表示网络受限于本主机(本地),而 globalswarm 表示容器网络能够再集群(一大批机器) 里进行连通。

image.png

bridge network

docker 默认的 bridge 网络使用了 Linux 的 命名空间、虚拟网卡设备、防火墙而创建的虚拟网络。 桥接网络只能在单主机上面使用,它并不知道什么是集群,而且容器的 IP 地址不会被记录到机器(主机)的路由表上面。

image.png

创建一个新的网络可以使用 docker network create 命令,其中 --attachable 参数能运行容器在任意时候接入或离开该网络。

# 创建一个网络
docker network create --driver bridge \
--label project=aaa \
--label bbb=ccc \
--attachable \
--scope local \
--subnet 10.0.42.0/24 \
--ip-range 10.0.42.128/25 \
user-network

# 创建另一个网络,名字和网段要不同
docker network create --driver bridge \
--label project=aaa \
--label bbb=ccc \
--attachable \
--scope local \
--subnet 10.0.43.0/24 \
--ip-range 10.0.43.128/25 \
user-network2

# 对容器使用这个网络

docker run -it \
--network user-network \
--name network-explorer alpine:3.8 sh

## 会进入容器的命令行,输入 ip -f inet -4 -o addr


# 当然也可以附加到其他网络上面去

docker network connect user-network2 network-explorer

# 重启上面的容器,查看ip 信息

 docker start -i network-explorer