그래서 다음 명령이 있습니다.
$(docker container ls -a -q) | docker container stop
모든 도커 컨테이너를 중지하고 훌륭하게 작동했습니다! 모든 컨테이너를 지우지 않는 한:
"docker container stop" requires at least 1 argument.
See 'docker container stop --help'.
Usage: docker container stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
한 줄 명령을 사용하여 이 오류 메시지가 표시되는 것을 방지할 수 있는 방법이 있습니까?
참고: 내 원래 명령은 실제로 docker container stop $(docker container ls -a -q)
동일한 오류 메시지를 표시했지만 한 명령을 다른 명령에 파이핑/체인 연결하여 내 문제를 설명하는 것이 더 쉬울 것이라고 생각했습니다. 두 명령에 대한 답변이 모두 작동하지만 사용하는 것을 선호합니다.docker container stop $(docker container ls -a -q)
답변1
Docker의 N-ary 중지 작업은 컨테이너가 없으면 어리석기 때문에 인수를 docker stop container
하나만 사용하는 단항 작업으로 처리하고 해당 단항 작업에 고유한 용어 목록을 할당할 수 있습니다. 물론 논리에서는 다음과 같이 빈 용어 시퀀스를 처리할 수 있습니다.
for x in $(docker container ls -a -q); do docker container stop $x; done
결과가 생성되지 않으면 $(docker ...)
루프가 실행되지 않습니다.
답변2
리디렉션을 사용하여 셸 출력을 무음으로 설정할 수 있습니다. 자세한 내용은 이 문서를 참조하세요.https://stackoverflow.com/questions/2292847/how-to-silence-output-in-a-bash-script
아마도 응답을 처리하기 위해 이와 유사한 것을 사용하여 여전히 출력을 얻을 것입니다.
docker container stop $(docker container ls -a -q) >/dev/null 2>&1 || echo "Nothing to stop."