Не удается удалить все настройки из контейнера

#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 : (