@silasibiri

Почему dockerd запрашивает root-права, когда они уже имеются?

Добрый день. Сразу говорю - я не до конца знаю, для чего нужен докер и как его правильно использовать. Просто эта чтука нужна для Outline - хочу поднять свой VPN сервер.
Такс, есть удаленная машина на ubuntu, на нее надо поставить докер и запустить его, с чем у меня собсна проблемы.
При запуске по-человечески ошибок не выдает, однако запущенным он не становится:
spoiler

root@goorm:/home/sergey# service docker start
 * Starting Docker: docker                                               [ OK ]
root@goorm:/home/sergey# service docker status
 * Docker is not running



Пытаюсь привести его в дествие командой dockerd:
spoiler

failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.6.0: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
 (exit status 3)



На всяк случ вот полный вывод от dockerd:
dockerd.txt

Что скажете, господа?
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
@ifgeny87
Приветствую!

Краткий ответ
Нельзя запустить докер внутри докер-контейнера.
Goormide запускается внутри докер-контейнера. А система безопасности Docker не позволит Вам запустить докер внутри докера.

Дальше приведу экспертизу
Для начала попробуем запустить сервис Docker вручную и посмотреть на наличие ошибок:
> sudo dockerd

В моем случае я получаю такой результат:
INFO[2023-07-25T03:39:25.466513684Z] stopping event stream following graceful shutdown error="context canceled" module=libcontainerd namespace=plugins.moby
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.6.1: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.


Эта ошибка информирует нас о том, что NAT не поддерживается операционной системой, в которой мы пытаемся запустить Docker.
Дальше можем попробовать узнать статус сервиса docker:
> systemctl status docker
System has not been booted with systemd as init system (PID 1). Can't operate.

Похоже на то, что пользователь systemd не поддерживается операционной системой, которую поднимает goorm.

Проверим, какой процесс занимает pid 1:
> ps -p 1 -o comm=
sshd

Делаем вывод, что ОС не поддерживает systemd и NAT.

Означает ли это, что Docker не будет запускаться? Не знаю, дальше уже не копался.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы