Можно ли использовать docker роем с безродным docker? - PullRequest
0 голосов
/ 13 января 2020

Я успешно установил без root docker и теперь пытаюсь использовать docker роем с ним. Я управляю четырьмя экземплярами GCP. Я выполнил следующие шаги:

на узле 1

  1. docker swarm init --advertise-addr 34.93.X.X

  2. docker swarm join-token manager дает docker swarm join --token SWMTKN-1-21vhv6gawb9mpur1v379sq52ia2jq4n0boqes0wos10o7m833l-5935hxvsht0x21o0qjpeqykae 34.93.X.X:2377

на узле 2

  1. docker swarm join --token SWMTKN-1-2xtpxpc18p8qf3e4kb3dvsjr4a4ae786entmwuekh6w5bbfmpz-e5rhoya81d1pajet80wx34mcv 34.93.X.X:2377 --advertise-addr 34.93.X.X дает приведенную ниже ошибку

Ошибка ответа от демона: rp c error : code = Unavailable des c = все SubConn находятся в TransientFailure, последняя ошибка соединения: ошибка соединения: des c = "transport: ошибка при наборе номера tcp 34.93.XX: 2377: соединение: соединение отклонено"

ПРИМЕЧАНИЕ

с rootful docker Я могу присоединиться к узлам.

1 Ответ

1 голос
/ 15 января 2020

Сегодня это невозможно. Это не вина Роя, это дизайн Linux. Swarm (по умолчанию) использует оверлейную сеть, которая создает виртуальные IP-адреса, маршруты VXLAN и многое другое в iptables, и без root (что угодно) не может контролировать Linux сеть на этом уровне, насколько я знаю.

См. https://docs.docker.com/engine/security/rootless/#known -ограничения

Если ваша цель - просто заблокировать Docker, я думаю, что это гораздо более эффективно для таких вещей, как пространства имен пользователя (dockerd работает как root, но контейнеры не запускайте как root), измените пользователя по умолчанию, работающего в контейнерах, и другие шаги, которые я перечислю здесь https://github.com/BretFisher/ama/issues/17

...