我已经成功安装了 rootless docker,现在我正在尝试使用 docker swarm 。我正在运行四个 GCP 实例。我按照以下步骤操作:
在节点 1 上
docker swarm init --advertise-addr 34.93.X.X
docker swarm join-token manager
给出
docker swarm join --token SWMTKN-1-21vhv6gawb9mpur1v379sq52ia2jq4n0boqes0wos10o7m833l-5935hxvsht0x21o0qjpeqykae 34.93.X.X:2377
在节点 2 上
docker swarm join --token SWMTKN-1-2xtpxpc18p8qf3e4kb3dvsjr4a4ae786entmwuekh6w5bbfmpz-e5rhoya81d1pajet80wx34mcv 34.93.X.X:2377 --advertise-addr 34.93.X.X
给出以下错误来自守护进程的错误响应:rpc 错误:代码 = 不可用 desc = 所有 SubConns 都处于 TransientFailure,最新连接错误:连接错误:desc =“传输:拨打 tcp 34.93.X.X:2377 时出错:连接:连接被拒绝”
注意
使用 rootful docker 我可以加入节点。
今天不可能了。这不是 Swarm 的错,而是 Linux 的设计的错。 Swarm(默认情况下)使用覆盖网络,在 iptables 中创建虚拟 IP、VXLAN 路由等,而据我所知,无根(任何东西)无法将 Linux 网络控制到该级别。
参见 https://docs.docker.com/engine/security/rootless/#known-limitations
如果您的目标只是锁定 Docker,我认为这对于用户命名空间(dockerd 以 root 身份运行,但容器不以 root 身份运行)、更改在容器中运行的默认用户以及我的其他步骤等更有效在此列出https://github.com/BretFisher/ama/discussions/150