Использование $ () в командах Docker, похоже, не работает - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу остановить все запущенные Docker-контейнеры с помощью команды sudo docker stop $(docker ps -a -q).Но когда я запускаю его, Docker выводит


Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied
"docker stop" requires at least 1 argument.
See 'docker stop --help'.

Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers

Просто запуск docker ps -a -q выводит идентификаторы Docker, но когда я объединяю его с командой Docker, это не работает.Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Я не осознавал, что sudo требуется и в подстановке команд:

sudo docker stop $(stop docker ps -a -q)

0 голосов
/ 27 февраля 2019

Не пытаетесь ли вы запустить docker ps -a -q и docker stop $(docker ps -a -q) на двух разных консолях / пользователях?Показанная ошибка на самом деле представляет собой две разные ошибки:

  1. docker ps -q -a не может завершиться из-за недостаточных прав доступа
  2. docker stop ... получает пустой список аргументов из-за ошибки в подоболочке

Редактировать: При использовании sudo каждая команда выполняется в другой оболочке / подоболочке, которая наследует привилегии / среду.Но подоболочки вызываются по порядку из самых внешних.Таким образом, скрипт будет вызываться в порядке docker ps, а затем sudo docker stop.У первого привилегии не будут повышены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...