如何将Rootless网络链接到docker0接口

118次阅读
没有评论

问题描述

在使用rootless模式安装docker后,使用docker-compose启动服务。当使用docker inspect命令查看时,发现rootless容器所在的网络是172.22.0.0/16,而主机的网络接口docker0是172.17.0.0/16。因此,无法从外部访问rootless容器。用户想知道如何将rootless网络链接到docker0接口。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在rootless模式下,docker使用了不同的网络配置。要将rootless网络链接到docker0接口,可以通过以下步骤进行操作:
1. 打开docker配置文件/etc/docker/daemon.json
2. 添加以下内容:

{
  "bridge": "docker0",
  "iptables": false
}
  1. 保存并关闭文件。
  2. 重启docker服务。
sudo systemctl restart docker
  1. 确认rootless容器是否已链接到docker0接口。
docker network inspect bridge

在输出中,你应该能够看到rootless容器的网络配置已链接到docker0接口。

方案2

请注意以下操作注意版本差异及修改前做好备份。
另一种方法是手动创建一个docker网络,并将rootless容器连接到该网络。以下是操作步骤:
1. 创建一个docker网络。

docker network create my_network
  1. 将rootless容器连接到该网络。
docker network connect my_network <container_name>

请将<container_name>替换为rootless容器的名称。
3. 确认rootless容器是否已连接到my_network网络。

docker network inspect my_network

在输出中,你应该能够看到rootless容器已连接到my_network网络。

方案3

请注意以下操作注意版本差异及修改前做好备份。
如果你想要将rootless容器链接到docker0接口,但不想更改docker的全局配置,你可以使用以下步骤:
1. 创建一个docker网络。

docker network create my_network --subnet=172.17.0.0/16
  1. 将rootless容器连接到该网络。
docker network connect my_network <container_name>

请将<container_name>替换为rootless容器的名称。
3. 确认rootless容器是否已连接到my_network网络。

docker network inspect my_network

在输出中,你应该能够看到rootless容器已连接到my_network网络,并且网络的子网与docker0接口的子网相同。

总结

通过以上解决方案,你可以将rootless网络链接到docker0接口。你可以选择修改docker的全局配置,手动创建一个docker网络,或者创建一个与docker0接口子网相同的docker网络。根据你的需求选择适合的方案。

正文完