指定 docker 容器的网段和IP
需求
docker 启动 msyql 容器,mysql 容器和宿主机,可以互相访问。
宿主机使用 192.168.13.0/24 网段,指定 msyql 容器 IP 地址是 192.168.13.14,宿主机的 IP 地址是 192.168.13.1。
分析
docker 容器和宿主机默认连接的方式是网桥,刚好符合我们的需求。
解决
- 创建网桥接口,名为
br-master
- 创建 Docker 网络,名为
server-master
,指定子网192.168.13.0/24
,并绑定到网桥接口br-master
- 启动 MySQL 容器并设置静态 IP 地址为
192.168.13.14
1.创建网桥接口 br-master
首先,我们需要创建一个网桥接口 br-master
,并为它分配一个 IP 地址。使用以下命令:
1 |
|
这样就创建了一个网桥接口 br-master
,并为其分配了 IP 地址 192.168.13.1/24
。
2.创建 Docker 网络 server-master
接下来,我们为 Docker 创建一个自定义网络 server-master
,并将其绑定到 br-master
网桥接口,设置子网为 192.168.13.0/24
。
1 |
|
--driver=bridge
:使用 Docker 的桥接网络模式。--subnet=192.168.13.0/24
:设置网络的子网范围为192.168.13.0/24
。--gateway=192.168.13.1
:设置网关地址为192.168.13.1
(即之前设置的网桥的 IP 地址)。--opt com.docker.network.bridge.name=br-master
:指定 Docker 使用br-master
网桥接口。server-master
:设置 Docker 网络名称为server-master
。
3.启动 MySQL 容器并指定静态 IP 地址
现在,我们可以启动一个 MySQL 容器并将其连接到 server-master
网络,并为其分配静态 IP 地址 192.168.13.14
。
1 |
|
--name mysql-container
:指定容器的名称为mysql-container
。--network server-master
:将容器连接到server-master
网络。--ip 192.168.13.14
:为容器指定静态 IP 地址192.168.13.14
(这个地址会从192.168.13.0/24
子网中分配)。-e MYSQL_ROOT_PASSWORD=root_password
:设置 MySQL 容器的 root 密码为root_password
(可以根据需要更改)。mysql:8
:使用官方 MySQL 8 镜像。
4.验证网络和容器配置
验证 Docker 网络配置
你可以使用以下命令检查 server-master
网络的配置,确保它使用了 br-master
作为桥接网桥接口:
1 |
|
这将显示 server-master
网络的详细信息,包括子网、网关以及所使用的网桥接口等。
验证 MySQL 容器的 IP 地址
使用以下命令验证 MySQL 容器是否成功分配了 IP 地址 192.168.13.14
:
这将返回容器的 IP 地址,应该是 192.168.13.14
。
5.连接到 MySQL 容器
如果你想通过 MySQL 客户端连接到该容器,可以使用以下命令:
1 |
|
输入 root_password
作为密码,应该能够成功连接到 MySQL 容器。
总结
- 创建网桥接口
br-master
:使用ip link
创建一个网桥接口,并为其分配192.168.13.1/24
的 IP 地址。 - 创建 Docker 网络
server-master
:创建一个自定义 Docker 网络server-master
,将其绑定到网桥接口br-master
,并设置子网为192.168.13.0/24
。 - 启动 MySQL 容器:启动一个 MySQL 容器,连接到
server-master
网络,并为其分配静态 IP 地址192.168.13.14
。 - 验证网络和容器:使用
docker inspect
验证容器的 IP 地址和网络配置。
指定 docker 容器的网段和IP
https://www.aimtao.net/docker-network/