본문 바로가기

BackEnd/Docker

[Docker] 컨테이너

컨테이너를 나열하기

 명령어 "docker ps"를 통해 현재 실행중인 컨테이너 목록을 나열할 수 있다.

  1. CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값
  2. IMAGE : 컨테이너 생성시 사용한 도커 이미지명
  3. COMMOND : 컨테이너 시작 시 실행될 명령어.  대부분 이미지에 내장되어 있으므로 별도 설정이 필요 없다.
  4. CREATED : 컨테이너가 생성된 시간
  5. PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트.  미설정시 표시되지 않는다.
  6. NAMES : 컨테이너 고유한 이름.  컨테이너 생성시 -name 옵션으로 설정 안하면 도커 엔진이 임의로 설정
                  docker rename 명령어로 이름을 변경할 수 있다.
    ex) docker rename zen_clarke(original-name) good-luck(change-name)

컨테이너 중 원하는 항목만 보기

 : 명렁어를 나열하여 원하는 항목만 볼 수 있다.

 

모든 컨테이너를 나열하기

 : "docker ps -a" 명령어를 통해 현재 수행중인 컨테이너 뿐만 아니라 모든 컨테이너내역을 표시한다.

 

도커 컨테이너의 생명주기

 도커 컨테이너 생성은 "docker run <이미지 이름>" 명령어를 통해서도 생성이 가능하다.

해당 명령어의 기능은 "docker create <이미지 이름>" + "docker start <컨테이너 아이디/이름>"으로 나눠 볼 수 있다.

Docker 컨테이너의 생명주기

 

Docker create + Docker Start 명령어

  • Docker create <이미지> : 도커 컨테이너를 생성한다.


  • Docker start <컨테이너 아이디> : 도커 컨테이너를 실행한다.  단 컨테이너 실행시 -a 명령어를 포함해야 한다.

    Docker create/start 명령어의 실행
  • 명령어 수행 예시
    - -a : attach : 걸치다는 의미이며 컨테이너를 실행한다.  넣지 않을 경우 컨테이너 아이디만 반환한다.
    ex) "docker start -a 8c15b94d2973e"
    명령어 실행 예시

Docker stop, Docker kill 명령어

  • 도커를 중지시키는 명령어는 "Docker stop", "Docker kill" 두 가지가 있다.
  • Stop은 Gracefully하게 중지를 시킨다.  그동안 하던 작업들을 (메시지를 보내고 있었다면 보내고 있던 메시지)
    완료하고 컨테이너를 중지 시킨다.
  • Kill은 Stop과 달리 어떠한 것도 기다리지 않고 바로 컨테이너를 중지 시킨다.

 

docker stop <컨테이너 아이디/이름>

 

docker kill <컨테이너 아이디/이름>

 

 

도커 컨테이너 삭제하기

  • 중지된 컨테이너를 삭제하기 : "docker rm <컨테이너 아이디/이름>"
  • 현재 실행중인 모든 컨테이너를 삭제하기 : "docker rm -f $(docker ps -qa)"
    - docker ps -qa은 현재 실행중인모든 컨테이너의 id만을 출력할 수 있다.
  • 이미지를 삭제하기 : "docker rmi <이미지id>
  •  한번에 사용하지 않는 컨테이너, 이미지, 네트워크 모두 삭제하기 : "docker system prune"

 

실행 중인 컨테이너에 명령어 전달 (docker exec <컨테이너아이디> 명령어)

 

1. 먼저 터미널 2개를 실행한다.

2. 첫 번째 터미널에서 컨테이너를 하나 실행한다.
  (docker alpine ping localhost)
3. 두 번째 터미널에서 컨테이너가 잘 작동하고 있는지 
  확인(docker ps)하고 다른 명령어를 전달한다.
    - "docker exec <컨테이너 아이디> 명령어"

 

docker run vs docker exec
 - docker run은 새로 컨테이너를 만들어서 실행한다.

 - docker exec은 이미 실행 중인 컨테이너에 명령어를 전달한다.

 

 

 

 

실행 중인 컨테이너에서 터미널 생활 즐기기

  • 현재 실행중인 컨테이너에 명령어를 전달 시 "docker exec -it <컨테이너 아이디> 명령어"를 필요시마다 계속 입력해야 하는 불편함이 존재한다.

  • 이러한 문제점을 해결하기 위해 쉘이나 터미널 환경으로 컨테이너 안에 접속할 수 있다. (sh 명령어를 통해)
    - "docekr exec -it <컨테이너 아이디> sh"
  • 해당 컨테이너 안에 접근 시 다양한 쉘 명령어를 통해 여러 작업들을 수행할 수 있다.
  • 터미널에서 빠져 나가기 위해서는 control + D 키를 눌러 나올 수 있다.
  • exec대신 run을 통해서도 가능하다. 

컨테이너 레디스를 통해 터미널 생활 즐기기

  1. 첫 번째 터미널
  2. 두 번째 터미널