본문 바로가기

개발 일기라기 보단 메모장/Docker

06. 도커(docker) 컨테이너의 생명주기 및 사용법

반응형

1. 도커 컨테이너 생명주기 

  • 보통 우리는 docker run 명령어를 이용하여 컨테이너 생성과 실행을 한번에 하였는데, 원래는 create + start로 나누어 볼 수 있다.

 

2. 도커 실행 (docker run = docker crete + docer start)

  • docker create 이미지 이름 (녹색 박스) : 파일 스냅샷을 하드디스크에 넣어줌.
  • docker start 컨테이너 아이디 or 이름 (파란색 박스) : 이미지에서 받아온 시작 명령어 실행.

 

3. 도커 실행 중지 (docker stop VS docker kill)

  • docker stop <중지할 컨테이너 아이디 or 이름> : 현재 진행중이던 작업을 정리할 시간을 기다렸다가 컨테이너를 중지.
  • docker kill <중지할 컨테이너 아이디 or 이름> : 현재 작업지 진행중이라도 정리할 시간을 기다려주지 않고 바로 중지.
  • 중지할 컨테이너 아이디는 "docker ps -a" 명령어를 통해 확인 가능하다.

 

4. 도커 컨테이너 삭제

docker rm a68d6fa2eaed
  • 실행중인 컨테이너는 반드시 중지해야 삭제가 가능하다.
  • 삭제할 컨테이너 아이디는 "docker ps -a" 명령어를 통해 확인 가능하다.
  • 특정 컨테이너 삭제 : docker rm <컨테이너 아이디>

 

docker rm `docker ps -a -q`​
  • 전체 컨테이너 삭제 : docker rm `docker ps -a -q`
  • 여기서 옵션 앞에있는 `기호는 작은 따옴표가 아니라 숫자1 왼족에 있는 억음부호이다.
  • 이미지 삭제 : docker rmi <이미지 id>
  • 사용하지 않는 컨테이너를 한번에 정리 : docker system prune
    - 실행중인 컨테이너에는 영향을 주지 않는다.
    - 컨테이너, 이미지, 네트워크 한번에 정리.

 

5. 도커 실행 중 명령어 전달하기

# docker exec <컨테이너 아이디> <명령어>
docker exec cbba6354bdad ls
  • 도커 실행중에 명령어를 사용하기 위해서는 컨테이너 안에서 실행을 해야 하기에 컨테이너 아이디를 적어줘야 한다.
    (docker ps로 확인)
  • ex) 터미널 A에서 docker run redis 실행후 터미널 B에서 redis-cli 명령어를 쓰는경우 정상적으로 작동하지 않음.
    => 터미널 A는 redis 컨테이너를 실행되고 있는 중에 터미널 B의 명령어는 redis 컨테이너 밖이기 때문에 명령어가 작동하지 않으므로 다음과 같아야 한다.

 

# docker exec -it <컨테이너 아이디> <명령어>
docker exec -it cbba6354bdad redis-cli​
  • -it 옵션 : interactive terminal의약자로. 명령어 실행후에 빠져나오지 않고 계속해서 명령어를 입력할 수 있게 해줌.

 

6. 실행중인 컨테이너의 터미널로 접근하기

# docker exec -it <컨테이너 아이디> <sh/bash/zsh 등등..>
docker exec -it a096f4bf67f6 sh​
  • 실행중인 컨테이너에 여러번 명령어를 실행해야 할 경우 5번에 설명한것과 같이 "docker exec -it <컨테이너 아이디> <명령어>" 방식으로 계속 입력하기에는 비효율적임
  • 실행중인 컨테이니의 터미널로 접근도 가능하다.
  • 터미널 종료 방법은  control + D

 

반응형