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