#docker #ubuntu
#docker #ubuntu
Вопрос:
Я пытаюсь удалить, остановить все контейнеры docker на моем сервере Ubuntu, но я продолжаю получать "docker stop" requires at least 1 argument.
Вот соответствующая часть моего файла действий Github:
- name: Deploy
env:
DOCKER_USER: ${{ secrets.DOCKER_USER }}
DOCKER_PW: ${{ secrets.DOCKER_PW }}
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DEVELOP_HOST }}
username: ${{ secrets.DEVELOP_USERNAME }}
password: ""
key: ${{ secrets.DEVELOP_PRIVATE_KEY }}
port: 22
script: |
ls
sudo chmod 666 /var/run/docker.sock
sudo docker pull username/reponame
sudo docker stop $(docker ps -a -q)
sudo docker rm $(sudo docker ps -q)
sudo docker run -d -e NODE_ENV=develop -p 3000:3000 username/reponame
Вывод: "docker stop" requires at least 1 argument.
Кто-нибудь знает, что здесь может происходить?
Заранее спасибо!
Ответ №1:
Это означает, что $(docker ps -a -q)
было оценено ни к чему.
sudo docker stop $(docker ps -a -q)
Вывод: для «docker stop» требуется как минимум 1 аргумент.
Это похоже на то, выполняете ли вы :
sudo docker stop
Это не может работать. В качестве аргументов ожидается использование одного или нескольких контейнеров.
Либо проигнорируйте ошибку :
sudo docker stop $(docker ps -a -q) || true
Или выполните остановку при условии :
containerIds=$(docker ps -a -q)
if [[ -n $containerIds ]] ; then
sudo docker stop $containerIds
fi
Комментарии:
1. … Или
docker ps -a -q | xargs -r docker stop
. Обычное использованиеsudo
тоже плохо пахнет.2. Действительно. В целом, с помощью
docker
команды,sudo
не особенно требуется для некоторых конкретных подкоманд (здесьstop
)3. Как только вы сделаете это,
chmod
чтобы ослабить разрешения для сокета Docker, вам вообще не нужноsudo
запускать команды Docker. (Также обратите внимание, что его тривиально использоватьdocker run
для редактирования таких вещей, как/etc/sudoers
на хосте, поэтому это может быть не та конфигурация безопасности, которую вы хотите.)4. Спасибо всем — по какой-то причине, если я не набираю
sudo
, я получаюdocker: command not found
: (