Docker 网络
本文最后更新于:2024年3月18日 凌晨
Docker 网络
- docker网络实现原理是通过
veth-pair
实现的,veth-pair
是一对的虚拟设备接口,总是成对出现的,一段连接协议,另一段彼此相连,充当连接各种虚拟网络设备的桥梁。 - 所有的容器不指定网络的情况下,都是
docker0
路由的,docker会给我们的容器分配一个默认的可用IP - Docker中的所有的网络接口都是虚拟的。
port
- 快捷地查看端口的绑定情况。
1 |
|
实例
1 |
|
docker虚拟网络管理
network ls
- 可以查看所有创建的网络情况。
1 |
|
network inspect
- 查看docker网络的详细信息。
1 |
|
实例
1 |
|
network create
- 新建自定义docker虚拟网络。
- 当多个容器加入同一个docker虚拟网络后,可以通过容器名替代ip访问其他容器。
1 |
|
- -d:指定 Docker 网络类型,有 bridge,overlay等,其中 overlay 网络类型用于 Swarm mode
- –subnet:指定子网(192.168.0.0/16)
- –gateway:指定网关。
network rm
- 移除docker虚拟网络。
1 |
|
容器连接网络
- Docker容器运行的时候有
host
,bridge
,none
三种网络可供配置。- 默认是
bridge
,即桥接网络,以桥接模式连接到宿主机。 host
是宿主网络,即与宿主机共用网络。none
则表示无网络,容器将无法联网。
- 默认是
birdge
- 使用
host.docker.internal
这个特殊的DNS名称来解析宿主机IP - 使用容器名解析其他容器的IP,在 Docker Compose 中也可以使用服务名解析其他容器的IP
1 |
|
- -P:是容器内部端口随机映射到主机的高端口。
- -p:是容器内部端口绑定到指定的主机端口。
- 另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1
1 |
|
- 这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。
- 上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp
host
- 当容器使用
host
网络时,容器与宿主共用网络。 - 使用host网络可以使用
localhost
访问宿主机,因而通用性比上一种方法好。 - 但是,由于
host
网络没有bridge
网络的隔离性好,使用host
网络安全性不如bridge
高。
1 |
|
- 上面的命令中,没有必要像前面一样使用
-p
来映射端口,是因为本身与宿主机共用了网络,容器中暴露端口等同于宿主机暴露端口。
连接自定义docker虚拟网络
1 |
|
实例
- 运行一个容器并连接到新建的 test-net 网络:
1 |
|
- 打开新的终端,再运行一个容器并加入到 test-net 网络:
1 |
|
容器与网络连接与断开
network connect
- 将容器与docker虚拟网络连接。
- 单个容器可与多个docker虚拟网络连接。
1 |
|
network disconnect
- 将容器与docker虚拟网络断开连接。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!