1. 도커와 쿠버네티스티스의 개요

김하영·2021년 9월 13일
0

'15단계로 배우는 도커와 쿠버네티스' 기반으로 내용 정리하였습니다.

  1. 도커 커맨드 치트 시트
  • 도커 커맨드의 전반적인 기능과 개요 파악

치트 시트
필요한 명령어를 빠르게 찾을 수 있도록 정리한 표
주요 명령어들이 잘 정리되어 있어 시스템에 대한 이해력을 높이는 데도 도움이 된다.

5.1 컨테이너 환경 표시

도커 환경을 표시하는 커맨드

  • docker version : 도커 클라이언트와 서버 버전 표시
  • docker info : 구체적인 환경 정보 표시

리눅스 커널 버전, 컨테이너 런타임 버전과 같이 상세한 정보를 출력한다.

5.2 컨테이너의 3대 기능

도커의 기본 기능은

(1) 컨테이너 이미지 빌드
(2) 이미지 이동과 공유
(3) 컨테이너의 실행

[ 컨테이너 이미지 빌드 커맨드 ]

현 디렉터리에 있는 Dockerfile을 바탕으로 이미지를 빌드

  • docker build -f 리포지터리:태그 .
  • docker image build -f 리포지터리:태그 .

로컬 이미지 목록

  • docker images
  • docker image ls

로컬 이미지 삭제

  • docker rmi 이미지
  • docker image rm 이미지

로컬 이미지 일괄 삭제

  • docker rmi -f 'docker images -aq'
  • docker image prune -a

[ 이미지의 이동과 공유 ]

원격 리포지터리의 이미지를 다운로드

  • docker pull 원격_리포지터리[:태그]
  • docker image pull 원격_리포지터리[:태그]

로컬 이미지를 레지스트리 서비스에 등록

  • docker push 원격_리포지터리[:태그]
  • docker image push 원격_리포지터리[:태그]

그 외에도 tag, login, save, load, export, import 등의 명령어가 존재한다.

[ 컨테이너 실행 ]

대화형으로 컨테이너를 기동해서 커맨드를 실행 / 종료 시에는 컨테이너를 삭제

  • docker run --rm -it 이미지 커맨드
  • docker container run --rm -it 이미지 커맨드

커맨드에 sh와 bash를 지정하면 대화형 셀로 리눅스 명령어 실행 가능

백그라운드로 컨테이너를 실행

  • docker run -d -p 5000:80 이미지
  • docker container run -d -p 5000:80 이미지

컨테이너 내 프로세스의 표준 출력과 표준 에러 출력은 로그에 보존
보존된 로그의 출력은 docker logs 참조
-p는 포트 포워딩으로 '호스트포트:컨테이너포트'로 지정

그 외에도 --name 옵션 (이름지정) , -v (디렉토리 마운트) 옵션으로 실행 커맨드를 작성할 수 있다.

실행 중인 컨테이너에 대해서 대화형 셸을 실행

  • docker exec -it <컨테이너|컨테이너ID> sh
  • docker container exec -it <컨테이너|컨테이너ID> sh

실행 중인 컨테이너 목록 출력

  • docker ps
  • docker container ps

옵션 -a를 사용하면 정지된 컨테이너도 포함하여 출력한다.

컨테이너의 주 프로세스에 시그널 SIGTERM 을 전송하여 종료 요청. 타임 아웃 시 강제 종료 진행

  • docker stop <컨테이너명 | 컨테이너ID>
  • docker container stop <컨테이너명 | 컨테이너ID>

컨테이너를 강제 종료

  • docker kill <컨테이너명 | 컨테이너ID>
  • docker container kill <컨테이너명 | 컨테이너ID>

종료한 컨테이너를 삭제

  • docker rm <컨테이너명 | 컨테이너ID>
  • docker container rm <컨테이너명 | 컨테이너ID>

종료한 컨테이너를 일괄 삭제

  • docker rm 'docker ps -a -q'
  • docker container prune -a

컨테이너를 이미지로서 레포지터리에 저장

  • docker commit <컨테이너명 | 컨테이너ID> 리포지터리:[태그]
  • docker container commit <컨테이너명 | 컨테이너ID> 리포지터리:[태그]

(그냥 container을 생략 해도 되는데 container을 표시해서 명령어를 치는 경우가 있을까?)

5.3 디버그 관련 기능

도커 커맨드를 사용해서 컨테이너를 개발할 때 사용하는 커맨드 이다.

[ 컨테이너 디버깅 관련 ]

컨테이너 로그를 출력

  • docker logs <컨테이너명 | 컨테이너ID>
  • docker container logs <컨테이너명 | 컨테이너ID>

옵션 -f을 추가하면 로그를 실시간으로 출력할 수 있다.

상세한 컨테이너의 정보를 표시

  • docker inspect <컨테이너명 | 컨테이너ID>
  • docker container inspect <컨테이너명 | 컨테이너ID>

컨테이너 실행 상태를 실시간으로 표시

  • docker stats
  • docker container stats

컨테이너 표준출력

  • docker attach --sig-proxy=false <컨테이너명 | 컨테이너ID>
  • docker container attach --sig-proxy=false <컨테이너명 | 컨테이너ID>

컨테이너 일시정지

  • docker pause <컨테이너명 | 컨테이너ID>
  • docker container pause <컨테이너명 | 컨테이너ID>

해제 시에는 unpause 커맨드를 사용한다.

정지한 컨테이너를 실행

  • docker start -a <컨테이너명 | 컨테이너ID>
  • docker container start -a <컨테이너명 | 컨테이너ID>

5.4 쿠버네티스와 중복되는 기능

도커에는 복수의 노드로 클러스터를 구성하는 도커 스웜이나 상호 의존하는 여러 개의 컨테이너를 빌드하여
실행하는 도커 컴포즈와 같은 우수한 도구들이 포함되어 있다.

( 도커 스윔이나 컴포즈도 상세하게 공부가 필요할까요? 어차피 대세는 쿠베니 쿠베 쪽만 알면 될까요?)

그리고 네트워크나 퍼시스턴트 볼륨 기능도 있다.

한편, 쿠버네티스에서 쿠버네티스가 제공하는 네트워크나 스토리지 기능을 이용할 것으로 다음 커맨드를 사용하지 않는다.

[ 네트워크 관련 ]

컨테이너 네트워크를 작성

  • docker network create 네트워크명

컨테이너 네트워크 목록 출력

  • docker network ls

컨테이너 네트워크 삭제

  • docker network rm 네트워크명

컨테이너 네트워크 목록

  • docker network ls

컨테이너 네트워크 삭제

  • docker network rm 네트워크명

미사용 컨테이너 네트워크 삭제

  • docker network prune

[ 퍼시스턴트 볼륨 관련 ]

퍼시스턴트 볼륨 작성

  • docker volume create 볼륨명

퍼시스턴트 볼륨 목록 출력

  • docker volume ls

퍼시스턴트 볼륨 삭제

  • docker volume rm 볼륨명

미사용 퍼시스턴트 볼륨 삭제

  • docker volume prune

[ 퍼시스턴트 볼륨 관련 ]

현 디렉토리의 docker-compose.yml을 사용해서 복수의 컨테이너 기동

  • docker -compose up -d

외에 목록 출력 (ps) / 컨테이너 정지 (down) / 이미지 삭제 (rmi) 명령어들이 존재한다.

profile
Back-end Developer

0개의 댓글