`sudo` с подстановкой команд

#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