#linux #bash #docker
#linux #bash #docker
Вопрос:
Я работаю с удаленной машиной, которая требуется sudo
для большинства docker
команд. Мне часто приходится выполнять несколько повторяющихся команд, Чтобы остановить контейнеры docker и т. Д.: sudo docker stop <container_name>
.
Обычно я бы использовал docker stop $(docker ps -q)
для остановки всех результатов docker ps -q
, но простое добавление префикса this с помощью sudo не делает того, что мне нужно: sudo docker stop $(docker ps -q)
приводит к ошибке «отказано в разрешении».
Есть ли способ передать это через sudo, чтобы мне не приходилось останавливать все по отдельности?
Комментарии:
1. Причина этого в том, что Docker запускается как демон, и они в основном запускаются с привилегиями. Если вам нужно сделать это от имени другого пользователя; вам нужно предоставить этому пользователю привилегии для этого. Docker любезно задокументировал это docs.docker.com/install/linux/linux-postinstall
Ответ №1:
Вам также необходимо указать sudo` во внутренней команде. Итак, должно работать следующее:
sudo docker stop $(sudo docker ps -q)
Ответ №2:
xargs также должен работать:
$ sudo docker ps -q | xargs sudo docker stop