출처: Exited 상태의 컨테이너 한 번에 삭제하기(feat. Created 상태의 컨테이너) (tistory.com)
docker ps -a로 컨테이너 현황을 보니까 Exited 상태인 컨테이너가 수두룩했다. 이걸 하나씩 지우는 건 당연히 말도 안된다고 생각했고 분명히 한 번에 지우는 방법이 있을 거라고 생각하고 검색해봤더니 역시나 있었다. 그래서, 간단히 포스팅해보려고 한다.
맨 처음 화면은 모든 컨테이너를 본 것이고 Exited 상태인 컨테이너만 보려면 filter 옵션인 -f로 status=exited를 해주면 된다. 여기에 quiet 옵션인 -q를 같이 입력해주면 Exited 상태인 컨테이너의 ID만 나오게 된다.
"docker ps -a -f status=exited -q"가 Exited 상태인 컨테이너의 ID를 출력해주는 명령어이므로 이들을 삭제해주면 된다. 컨테이너 삭제 시 docker rm [컨테이너 ID]이기 때문에 이렇게 컨테이너 ID만 나오게끔 명령어를 준 것이다. 따라서, 총 명령어는 "docker rm $(docker ps -a -f status=exited -q)"이다.
Exited 상태의 컨테이너가 있는지 다시 확인해보면 모두 삭제된 것을 확인할 수 있다. 그 다음 2번째 부분인 "docker ps -a"를 보면 Created 상태의 컨테이너가 있는 것을 확인할 수 있다. Created 상태의 컨테이너는 생성은 됐으나 시작은 되지 않은 컨테이너다. 우리가 사용하는 docker run은 사실 docker create + docker start + docker attach(컨테이너로 접속)이다. 물론 -d 옵션으로 백그라운드로 실행(run)을 하면 docker create + docker start이다.
Created 상태의 컨테이너는 에러로 인해서 시작되지 못하고 Created 상태로 남아있는 것일 수도 있고 docker create로 생성만 하고 시작은 안 한 상태일 수도 있다. docker create는 필요할 때 시작할 수 있도록 미리 컨테이너 구성을 설정하려는 경우에 유용하다고 한다. 사실 무슨 느낌인지 잘 모르겠다. 나중에 알게 되면 내용을 추가하도록 하겠다.
여튼 생성만 되고 시작이 되지 않은 컨테이너기 때문에 docker ps로 확인해보면 나오지 않는다.(3번째 부분)
필요에 의해서 docker create로 Created 상태의 컨테이너를 생성한 경우는 상관 없지만 에러로 인해서 시작되지 못하고 Created 상태로 남아있는 컨테이너의 경우는 굳이 둘 필요가 없으므로 Exited 상태의 컨테이너를 삭제하는 것처럼 똑같이 삭제하면 된다.
또는 이렇게 동시에 할 수도 있다. "docker ps -a -f status=exited -f status=created" 이렇게 하면 Exited 상태의 컨테이너와 Created 상태의 컨테이너를 동시에 확인할 수 있다. 위에서 Exited 상태의 컨테이너들은 모두 삭제했기 때문에 현재 Created 상태의 컨테이너밖에 나오지 않는 것이다. 이 역시 -q 옵션을 통해 컨테이너 ID만 나오게 한 다음 동시에 삭제가 가능하다.
참고 사이트
- docs.docker.com/engine/reference/commandline/create/
- ko.ojit.com/so/docker/219199
- stackoverflow.com/questions/37744961/docker-run-vs-create/37745261
'프로그램 활용 > 클라우드 가상화 도커' 카테고리의 다른 글
도커 Docker 이미지, 컨테이너 및 볼륨을 제거하는 방법 (0) | 2023.08.01 |
---|---|
도커 컨테이너 레벨 명령어 (0) | 2023.08.01 |
도커 docker_get D-Bus connection: Operation not permitted (0) | 2023.08.01 |
Docker를 사용하여 MySQL 설치하고 접속하기 (0) | 2023.08.01 |
Docker + Apache + Oracle 14c + Oracle 19c (0) | 2023.07.28 |