[Docker] 容器改桥接

最近在使用Docker部署MtPhotos的时候需要不同主机之间访问, 但是Docker默认的网络模式只能docker容器之间互相访问.所以查了下如何改成桥接,并做成了教程.

1. 查看网络接口名称

在宿主机的终端输入

ip a

可以看到我这里的网络接口名称为enp6s18 内网网关为192.168.10.1, 内网网段为192.168.10.x

2. 创建 macvlan 网络

输入以下指令,创建 macvlan 网络

docker network create -d macvlan \
  --subnet=192.168.10.0/24 \
  --gateway=192.168.10.1 \
  -o parent=enp6s18 docker-macvlan

3. 运行容器并分配 IP

如果这个容器已经联网,需要先断开网络

查看到容器网络接口为bridge,先断开这个网络

docker network disconnect bridge mt-photos

再给这个容器分配IP和网络

docker network connect --ip 192.168.10.20 docker-macvlan mt-photos

4. 添加虚拟接口(可选)

为了解决宿主机无法直接与 macvlan 容器通信的问题, 这里需要添加一个虚拟接口

ip link add macvlan-proxy link enp6s18 type macvlan mode bridge
ip addr add 192.168.10.5 dev macvlan-proxy # 宿主机IP
ip link set macvlan-proxy up
ip route add 192.168.10.20 dev macvlan-proxy # 容器IP

5. 验证是否可以正常访问

ping 192.168.10.20

可以看到已经正常ping通, 服务也可以正常访问

6. 删除macvlan

如果配置失败或者更换网口, 可以把这个macvlan删除

docker network ls
docker network rm docker-macvlan


[Docker] 容器改桥接
https://blog.onanii0721.website//archives/docker-rong-qi-gai-qiao-jie
作者
Gzcheng
发布于
2025年01月13日
更新于
2025年02月28日
许可协议