본문 바로가기
개발환경

[개발환경 - 도커(4)] 도커 명령어 사용하기 / 도커 기본 클라이언트 명령어 - 개발하는 지토

by 개발하는 지토 2020. 11. 21.

도커 명령어로 이미지 내부 파일 시스템 구조 보기 ⌨️

 

명령어 " docker run {이미지} ls " 실행

 

  1. 도커 이미지를 가져옴
  2. 도커 컨테이너를 만듦
    1. 파일 스냅샷을 하드디스크에 다운로드함
  3. docker run {이미지] ls 명령어 실행 (기본 커맨드는 무시되고, ls 커맨드가 실행됨)
  4. 해당 이미지 내부 파일 시스템 구조 확인

 

파일 스냅샷이 어떤 것들이 있느냐에 따라서 쓸 수 있는 커맨드가 제한적이다.


도커 명령어로 컨테이너 나열하기 ⌨️

 

명령어 " docker ps " 실행

 

 

  1. CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값
  2. IMAGE : 이미지 이름
  3. COMMAND : 컨테이너가 시작 시 실행될 명령어
  4. CREATED : 컨테이너가 생성된 시간
  5. STATUS : 컨테이너의 상태
    1. Up : 실행 중
    2. Exited : 종료
    3. Pause : 일시정지
  6. PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트
  7. NAMES : 컨테이너 고유한 이름
    1. 컨테이너 생성 시 —name 옵션으로 이름을 설정하지 않으면 도커 엔진이 임의로 설정함
    2. id와 마찬가지로 고유한 값임

 

명령어 " docker ps —format 'table{{.Names}}\table{{.Image}} " 실행

 

  1. 내가 원하는 항목만 볼 수 있는 명령어
  2. 위의 명령어에서는 Names, Image 항목에 대한 정보만 보임

 

명령어 " docker ps -a " 실행

 

  1. 모든 컨테이너 나열

도커 명령어로 알아보는 도커 컨테이너의 생명주기 🐋

 

생성 (create) → 시작 (start) → 실행 (running) → 중지 (stopped) → 삭제 (deleted)

 

  • 생성 : docker create {이미지 이름}
  • 시작 : docker start {시작할 컨테이너 아이디/이름}
  • 실행 : docker run {이미지 이름}
  • 중지 : docker stop {중지할 컨테이너 아이디/이름}, docker kill {중지할 컨테이너 아이디/이름}
  • 삭제 : docker rm {삭제할 컨테이너 아이디/이름}

 

도커 생성

docker create {이미지 이름}

  • 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 넣어줌

도커 시작

docker start {컨테이너 아이디/이름}

  • 시작 시 실행될 명령어를 컨테이너에 넣고 실행함
  • docker start -a {컨테이너 아이디/이름}
    • -a (attach) 옵션 : 도커 컨테이너가 실행 될 때 해당 컨테이너에 붙어서 Output을 화면에 표출해줌

도커 실행 = 생성 + 시작

docker run {이미지 이름}

  1. 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 넣어줌
  2. 시작 시 실행될 명령어를 컨테이너에 넣고 실행함

도커 중지

docker stop {중지할 컨테이너 아이디/이름}

  • Gracefully 하게 중지를 시킴 : 기다렸다가 컨테이너를 중지
  • SIGTERM을 날려서 Grace Period(정리시간)이 지나고 SIGKILL을 Main Process에 날려서 컨테이너를 중지함

docker kill {중지할 컨테이너 아이디/이름}

  • 어떠한 것도 기다리지 않고 바로 컨테이너를 중지
  • Grace Period가 없이 SIGKILL을 바로 Main Process에 날려서 컨테이너를 즉시 중지함
  •  

도커 명령어로 컨테이너 삭제하기 🧹

docker rm {삭제할 컨테이너 아이디/이름}

  • 실행 중인 컨테이너를 삭제할 때는 컨테이너를 먼저 중지한 후에 삭제 가능

docker rm `docker -a -q`

  • 모든 컨테이너를 삭제

docker rmi {이미지 id}

  • 이미지를 삭제

docker system prune (유용함)

  • 도커를 쓰지 않을 때 모두 정리하고 싶을 때 사용
  • 실행 중인 컨테이너는 정리하지 않음

도커 명령어로 실행중인 컨테이너에 명령어 전달 📨

 

docker exec {컨테이너 아이디} " 명령어 "

  • 지정한 컨테이너 안에서 명령어를 실행함
  • -it 옵션 : 명령어를 실행한 후 계속 명령어를 적을 수 있음 ex) docker exec -it {컨테이너 아이디} "명령어"

레디스(Redis)를 이용한 도커 컨테이너 이해 🔴

 

도커로 레디스를 실행하면 레디스 환경은 도커 컨테이너 안에서만 해야 됨, 밖에서 아무리 레디스를 사용하려 해도 쓸 수 없음

 

⭐실습⭐

  1. 터미널을 실행하고 " docker run redis " 명령어를 실행한다 → Redis 서버 작동

  2. " docker exec -it {컨테이너 아이디} redis-cli " 명령어를 실행한다 → Redis Client

    1. -it 옵션 : 명령어를 실행한 후 계속 명령어를 적을 수 있다 - 해당 옵션을 안 적으면 redis client를 실행하고 다시 빠져나옴
  3. redis 명령어를 사용해본다. ex) set key value → get key

    1. 아래 이미지처럼 redis 실행 확인 가능


도커 명령어로 컨테이너를 쉘 환경으로 접근하기 👌

 

  1. 터미널을 실행하고 alpine 이미지를 이용해서 컨테이너를 실행 ( " docker run alpine ping localhost " )
  2. exec 명령어를 쓰고 마지막 명령어 부분에 sh를 더해서 실행 ( " docker exec -it {컨테이너 아이디} sh " )
  3. 터미널 환경에서 할 수 있는 동작을 모두 할 수 있음
  4. Control + D로 탈출

댓글