指定 docker 容器的网段和IP

需求

docker 启动 msyql 容器,mysql 容器和宿主机,可以互相访问。

宿主机使用 192.168.13.0/24 网段,指定 msyql 容器 IP 地址是 192.168.13.14,宿主机的 IP 地址是 192.168.13.1。

分析

docker 容器和宿主机默认连接的方式是网桥,刚好符合我们的需求。

解决

  1. 创建网桥接口,名为br-master
  2. 创建 Docker 网络,名为 server-master,指定子网 192.168.13.0/24,并绑定到网桥接口 br-master
  3. 启动 MySQL 容器并设置静态 IP 地址为 192.168.13.14

1.创建网桥接口 br-master

首先,我们需要创建一个网桥接口 br-master,并为它分配一个 IP 地址。使用以下命令:

1
2
3
4
5
6
7
8
# 创建网桥接口 br-master
sudo ip link add name br-master type bridge

# 设置网桥的 IP 地址和子网
sudo ip addr add 192.168.13.1/24 dev br-master

# 启用网桥接口
sudo ip link set dev br-master up

这样就创建了一个网桥接口 br-master,并为其分配了 IP 地址 192.168.13.1/24

2.创建 Docker 网络 server-master

接下来,我们为 Docker 创建一个自定义网络 server-master,并将其绑定到 br-master 网桥接口,设置子网为 192.168.13.0/24

1
2
3
4
5
6
docker network create \
--driver=bridge \
--subnet=192.168.13.0/24 \
--gateway=192.168.13.1 \
--opt com.docker.network.bridge.name=br-master \
server-master
  • --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
2
3
4
5
6
docker run -d \
--name mysql-container \
--network server-master \
--ip 192.168.13.14 \
-e MYSQL_ROOT_PASSWORD=root_password \
mysql:8
  • --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
docker network inspect server-master

这将显示 server-master 网络的详细信息,包括子网、网关以及所使用的网桥接口等。

验证 MySQL 容器的 IP 地址

使用以下命令验证 MySQL 容器是否成功分配了 IP 地址 192.168.13.14

1
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-container

这将返回容器的 IP 地址,应该是 192.168.13.14

5.连接到 MySQL 容器

如果你想通过 MySQL 客户端连接到该容器,可以使用以下命令:

1
mysql -h 192.168.13.14 -u root -p

输入 root_password 作为密码,应该能够成功连接到 MySQL 容器。

总结

  1. 创建网桥接口 br-master:使用 ip link 创建一个网桥接口,并为其分配 192.168.13.1/24 的 IP 地址。
  2. 创建 Docker 网络 server-master:创建一个自定义 Docker 网络 server-master,将其绑定到网桥接口 br-master,并设置子网为 192.168.13.0/24
  3. 启动 MySQL 容器:启动一个 MySQL 容器,连接到 server-master 网络,并为其分配静态 IP 地址 192.168.13.14
  4. 验证网络和容器:使用 docker inspect 验证容器的 IP 地址和网络配置。

指定 docker 容器的网段和IP
https://www.aimtao.net/docker-network/
Posted on
2024-11-25
Licensed under