Containerization/Docker

[Docker] 도커 run/stop/remove/이미지 삭제하기

쉬지마 이굥진 2024. 5. 11. 11:23

이 글은 2024 05월 원티드 프리온보딩 BE 챌린지 프로그램 '도커'편 수업을 회고하며 정리한 글입니다.


이전 포스팅에서는 도커 hub에서 이미지를 가져오는 방법을 작성했다. 

 

[Docker] 도커 image pull 받기 / 받은 것 확인하기

[기본 용어] docker hub 우리가 어떤 프로그램이 필요할 때 app store에서 찾듯, docker hub라고 불리는 레지스트리에서 필요한 소프트웨어를 찾을 수 있다. image docker hub에서 찾아낸 것을 로컬 컴퓨터에

developer-jinnie.tistory.com

 

이번 포스팅에서는 받은 이미지를 실행시켜서 컨테이너를 만드는 방법인 run을 기술하겠다. 

docker  run하기

  • docker run : 받은 이미지를 실행시키고 컨테이너를 만드는 명령어
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 docker run 명령어 뒤에 실행시키고 싶은 이미지의 이름을 적는다.

이미지의 이름 앞에는 옵션을 적는다. (생략 가능)

이미지의 이름 뒤에는 컨테이너의 안에서 실행하고 싶은 명령어가 있다면 그걸 입력한다. (생략 가능)

httpd 이미지 실행

 

  • docker ps : 만든 컨테이너 확인

만들어진 컨테이너의 id와 상태, 포트번호, 이름 등이 보인다.

 

  • 하나의 이미지는 여러 개의 컨테이너를 만들 수 있음

[옵션] ws2라는 이름의 컨테이너 생성
ws2라는 이름의 httpd 컨테이너가 만들어진 것을 확인할 수 있음

 


docker  stop하기

  • docker stop : 실행 중인 컨테이너 끄기
 docker stop [OPTIONS] CONTAINER [CONTAINER...]

ws2(이름)대신에 id를 넣어도 된다.
이후 ws2 컨테이너가 꺼진 것을 확인할 수 있다. (shutting down)

  • docker stop 명령어를 통해 컨테이너를 껐으면, 완전히 삭제 된걸까?
  • 답은 아니다. 

 

  • docker ps -a : 모든 실행중인 컨테이너 확인하기 

docker ps -a 명령어를 통해 확인해보니 아직 ws2가 나타나는 걸 볼 수 있다.

즉, stop 했다고 컨테이너가 아예 삭제된 것은 아니라는 말 !  ps 옵션으로는 볼 수 없고 ps -a 를 통해서만 볼 수 있다.

그럼 중지시켰던 컨테이너를 다시 켜보자.


docker  start하기

docker start [OPTIONS] CONTAINER [CONTAINER...]

 

이때 start 시켜도 로그가 출력되지 않는다. 이게 답답하다면 로그를 볼 수 있는 명령어가 있다 ! 


docker  log  보기

 docker logs [OPTIONS] CONTAINER

  • docker logs -f : 실시간 로그 보기

로그의 변화가 실시간으로 화면에 출력되게 됨


그렇다면 컨테이너를 완전히 삭제 해보자!

docker  remove(삭제)

docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • 주의: 도커 중지 전에 삭제 명령어를 넣으면 에러 난다! > 도커 중지 후에 삭제 시켜주자.

에러남 ㅎ ..
1. stop 한 다음  2. remove

  • 참고: 하지만 현재 실행 중인 컨테이너를 중지없이 한 방에 삭제시킬 수 있긴 하다 ! 
docker rm --force CONTAINER

 


마지막으로 이미지를 삭제해보자! 

docker  image  remove(이미지 삭제)

 docker rmi [OPTIONS] IMAGE [IMAGE...]
  • 주의 : 이미지 삭제를 하려고 했더니 에러가 났다. 찾아보니 컨테이너 이미지는 하나인데 실제로 수행되는 컨테이너는 여러개 있어서 나는 에러였다. 
Error response from daemon: conflict: unable to remove repository reference "httpd" (must force) - container acfd983c16ce is using its referenced image a6ca7b52a415

에러남 2 ..ㅎㅎ

  • 해결 : docker ps -a 명령어로 현재 로드된 컨테이너를 살펴본 후에, 해당 컨테이너를 삭제한 후 이미지를 삭제할 수 있었다.


정리

  • 도커 실행하기
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 현재 컨테이너 확인 
docker ps
  • 실행 중인 컨테이너 끄기
docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • 컨테이너 시작하기 
docker start [OPTIONS] CONTAINER [CONTAINER...]
  • 로그 보기 
docker logs [OPTIONS] CONTAINER
  • 컨테이너 삭제하기
 docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • 이미지 삭제하기 
 docker rmi [OPTIONS] IMAGE [IMAGE...]