Docker

컨테이너 관련 명령어 알아보기

KimMinJun 2025. 7. 31. 10:07

개요

이번 포스팅에서는 그동안 알아보지 않고 무작정 썼던 명령어들을 조금 자세히 알아보려 한다.

컨테이너와 이미지 생성, 삭제 등 이미 모두 해보았지만,

명령어의 각 옵션이 무엇을 의미하는지 알아보자.

 

컨테이너 조회하기

컨테이너를 조회하기 위해서 기본적으로 다음 명령어를 사용했었다.

docker ps

여기서 중요하게 알아야 할 것이 있다.

위 명령어는 모든 컨테이너를 조회하는 것이 아니라,

'실행중인 컨테이너'를 조회하는 명령어이다.

 

 

아래 명령어는 위 명령어와 뭐가 다를까?

docker ps -a

여기서 `-a` 옵션을 붙였는데, 'all'의 약자라고 생각하면 된다.

실행중인 컨테이너, 중지된 컨테이너 '모두' 포함해서 조회하는 명령어이다.

STATUS를 보면 'Exited'라고 되어있는데,

중단된 컨테이너를 의미한다.

 

컨테이너 실행하기

이제 중단된 컨테이너를 실행해보자.

docker run -d nginx

 

여기서 `-d`는 'detached'의 약자라고 생각하면 된다.

'detached'는 '분리된' 이라는 의미를 가지고 있으며,

foreground가 아닌, background에서 실행해준다.

실행중인 컨테이너를 조회하는 명령어로 확인해보면,

중단된 상태였던 컨테이너가 잘 보이는 것을 확인할 수 있다.

 

컨테이너 중지하기

컨테이너를 중지하기 위해서는 다음 명령어를 사용했었다.

docker stop [CONTAINER ID]

이 때, CONTAINER ID는 다른 컨테이너와 구분이 가는 정도에서 일부만 입력해도 된다.

물론, NAMES를 지정해줬을 경우에는 컨테이너 이름을 입력해줘도 된다.

 

 

그런데, 만약 컨테이너가 멈추지 않거나, 응답이 없다면 어떻게할까?

우리가 컴퓨터를 전원 버튼을 꾹 눌러서 강제종료 하듯이,

컨테이너도 다음 명령어로 강제종료 할 수 있다.

docker kill [CONTAINER ID]

 

하지만 위 방법은 데이터가 손실되거나 비정상으로 종료될 위험이 있다.

그러므로, 최후의 수단으로 사용해야 한다.

 

 

일반적으로는 `docker stop`으로 안전하게 종료하고,

컨테이너가 멈추지 않거나, 응답이 완전히 없을 때만 `docker kill`을 사용하는게 좋다.

 

컨테이너 삭제하기

컨테이너를 삭제할 땐 다음 명령어를 사용했다.

docker rm [CONTAINER ID]

이렇게 중간에 공백을 두어서 여러 컨테이너를 한 번에 지울 수도 있다.

 

하지만, 컨테이너는 실행 중에 지울 수 없다.

테스트를 위해 컨테이너를 실행해서 다시 지워보자.

그러면 에러가 발생하는데,

에러메시지를 보면 컨테이너를 지우기 전에 컨테이너를 중지하라고 나온다.

 

컨테이너를 중지하고 삭제해보자.

위와 같이 잘 삭제가 된 것을 볼 수 있다.

 

 

만약 여러개의 컨테이너를 한 번에 지우고 싶다면 어떻게 할까?

다음과 같이 여러 컨테이너가 있다고 해보자.

물론 중간에 공백을 두고 CONTAINER ID를 모두 입력할 수 있다.

하지만, 컨테이너가 많아질수록 힘들어진다.

그럴땐 다음 명령어로 한 번에 지울 수 있다.

docker rm $(docker ps -qa)

여기서 `docker ps -qa`는 현재 호스트에 저장된 모든 컨테이너의 ID를 호출한다.

`-q` 옵션은 'quiet'로, ID만 추출하고,

`-a` 옵션은 'all'로, 실행 중이든 중지 상태든 모든 컨테이너를 포함한다.

 

 

마지막으로, 실행 중이던 컨테이너를 바로 삭제하는 법은 다음과 같다.

docker rm -f [CONTAINER ID]

여기서 `-f`는 'force'의 약자로, '강제로' 한다는 의미이다.