도커/쿠버네티스 컨테이너 개발 실전 입문 · · 5 min read
부록 C : 주요 명령어 정리
1. 도커 명령어
$ docker image build [options] (Dockerfile경로 | URL)- Dockerfile로부터 도커 이미지를 빌드
$ docker search [options] 키워드- 도커 허브에서 제공되는 도커 이미지를 검색
$ docker image pull [options] 리포지토리명[:태그명]- 도커 레지스트리에서 도커 이미지를 다운로드
$ docker image ls [options] [리포지토리명[:태그명]]- 해당 도커 호스트가 보유한 도커 이미지의 목록을 출력
$ docker image tag 이미지원래이름[:태그] 이미지새이름[:태그]- 도커 이미지 태그를 생성
$ docker image push [options] 리포지토리명[:태그명]- 도커 레지스트리에 도커 이미지를 전송해 등록
$ docker container run [options] 이미지명[:태그명] [명령] [명령인자 ...]- 도커 컨테이너를 새로 실행
$ docker container ls [options]- dockerd가 보유한 컨테이너 목록 출력
$ docker container stop [options] (컨테이너ID | 컨테이너명)- 실행중인 컨테이너를 정지
$ docker container restart [options] (컨테이너ID | 컨테이너명)- 정지한 컨테이너를 다시 실행
$ docker container rm [options] (컨테이너ID | 컨테이너명)- 컨테이너를 디스크에서 삭제
$ docker container logs [options] (컨테이너ID | 컨테이너명)- 컨테이너의 로그(표준 출력)를 화면에 출력
$ docker container exec -it [options] (컨테이너ID | 컨테이너명) 컨테이너에서_실행할_명령- 실행 중인 컨테이너에서 명령어를 실행
$ docker container cp [options] (컨테이너ID | 컨테이너명):원본파일 대상파일- 컨테이너에서 호스트로 파일 및 디렉토리 복사
$ docker container cp [options] 호스트_원본파일 (컨테이너ID | 컨테이너명):대상파일- 호스트에서 컨테이너로 파일 및 디렉토리 복사
$ docker container prune [options]- 정지 상태인 모든 컨테이너를 디스크에서 삭제
$ docker image prune [options]- 사용하지 않는 모든 도커 이미지를 디스크에서 삭제
$ docker system prune [options]- 사용하지 않는 컨테이너 및 이미지, 볼륨, 네트워크 등 모든 도커 리소스를 일괄 삭제
$ docker container stats [options]- 시스템 리소스 사용 현황을 컨테이너 단위로 실시간 출력
2. Dockerfile 인스트럭션
FROM- 빌드하는 이미지의 기반 이미지를 지정
RUN- 이미지를 빌드할 때 컨테이너에서 실행할 명령어를 정의
COPY- 호스트에서 컨테이너로 파일 및 디렉토리를 복사
ADD- COPY의 기능에 압축 파일 자동 해제 및 URL로부터 컨테이너에 파일 및 디렉토리 추가
- 운영 체제를 담은 기반 이미지를 만들 때처럼 특수한 경우에 활용
CMD- 컨테이너에서 포어그라운드로 실행할 명령어 정의
ENTRYPOINT- 컨테이너를 실행 가능 파일로 사용할 때 정의하는 명령
- CMD와 ENTRYPOINT를 함께 사용할 수 있음
ARGdocker image build를 실행할 때 사용하는 변수
ENV- 컨테이너 안의 환경 변수를 정의
EXPOSE- 컨테이너가 노출하는 포트
VOLUME- 호스트나 다른 컨테이너에서 마운트할 수 있는 포인트 생성
LABEL- 이미지에 추가하는 메타 데이터
STOPSIGNAL- 컨테이너에 전달되면 컨테이너를 종료하는 시스템 시그널 설정
HEALTHCHECK- 컨테이너 안에서 명령을 실행하고 그 결과를 헬스 체크에 사용
USER- 컨테이너 실행 시 컨테이너 사용자. 이미지 빌드 시 USER 정의 뒤에 나오는 RUN 인스트럭셔도 해당 사용자 권한으로 실행
WORKDIR- 컨테이너의 작업 디렉토리
ONBUILD- 컨테이너 안에서 실행되는 명령을 정의
- 이미지에서는 실행되지 않음
- ONBUILD를 정의한 이미지를 기반 이미지로 삼아 다른 이미지를 빌드할 때 실행
3. 도커 컴포즈 명령어
$ docker-compose build [options]- 컴포즈로 관리하는 서비스를 이미지로부터 빌드
$ docker-compose create [options]- 컴포즈로 관리하는 서비스를 생성
$ docker-compose start [options]- 컴포즈로 관리하는 서비스를 시작
$ docker-compose up [options]- 컴포즈로 관리하는 서비스를 생성 및 시작
$ docker-compose stop [options]- 컴포즈로 실행 중인 서비스를 정지
$ docker-compose rm [options]- 컴포즈로 실행 중인 서비스를 삭제
$ docker-compose down [options]- 컴포즈로 실행 중인 서비스를 정지 및 삭제
$ docker-compose ps [options]- 컴포즈로 실행 중인 컨테이너의 목록을 출력
$ docker-compose logs [options]- 컴포즈로 실행 중인 컨테이너의 로그를 요약해 출력
4. 도커 스웜/스택 명령어
$ docker swarm init [options]- 스웜 클러스터를 초기화
$ docker swarm join [options] manager 호스트:포트- 스웜 클러스터에 노드 혹은 매니저를 추가
$ docker swarm leave [options]- 스웜 클러스터에서 노드 혹은 매니저를 제거
$ docker stack deploy [options] 스택명- 스웜 클러스터에 스택을 배포
$ docker stack (ls | list) [options]- 스웜 클러스터에 배포된 스택 목록을 출력
$ docker stack ps [options] 스택명- 스택 안에서 실행 중인 태스크를 출력
$ docker stack (rm | remove | down) [options] 스택명- 스웜 클러스터에서 스택을 제거
$ docker stack services [options] 스택명- 스택에 포함된 서비스 목록을 출력
5. 헬름 명령어
$ helm init [options]- 헬름을 초기화해 대상 쿠버네티스 클러스터를 배포할 수 있는 상태로 만든다.
- 옵션
--service-account: 틸러가 사용할 서비스 계정--node-selector: 틸러를 배포할 노드의 레이블--upgrade: 틸러 업그레이드--history-max: 리소스 하나당 유지할 히스토리 최대 수
$ helm version- 헬름 명령행 도구와 틸러의 버전을 확인한다.
$ helm create 차트명- 헬름 차트의 템플릿을 생성한다.
$ helm lint 차트명- 생성된 차트 템플릿이나 Chart.yaml, values.yaml 파일이 문법에 어긋나지 않는지 검사한다.
$ helm package [options] 차트_경로- 차트를 압축 파일로 패키징한다.
- 옵션
--version: 차트의 버전-d, --destination: 압축 파일을 출력할 디렉토리
$ helm repo list- 헬름 명령행 도구로 사용할 수 있는 차트 리포지토리 목록을 출력한다.
$ helm repo add 리포지토리명 리포지토리URL- 차트 리포지토리를 추가한다.
$ helm repo remove 리포지토리명- 현재 등록된 차트 리포지토리를 삭제한다.
$ helm repo update- 등록된 차트 리포지토리에서 최신 차트 정보를 받아온다.
- 반아온 정보는 로컬에 캐시되어
helm search명령 등에 사용된다.
$ helm search [검색키워드] [options]- 등록된 차트 리포지토리에서 원하는 차트 정보를 검색한다.
- 옵션
-r, --regexp: 키워드에 정규 표현식을 사용-l, --version: 리포지토리에 등록된 버전 목록을 출력
$ helm fetch [options] 차트URL | 차트 리포지토리나 차트명- 차트 리포지토리에서 패키지를 내려받는다.
- 옵션
--version: 내려받을 차트의 버전
- 사용 예시
$ helm fetch stable/redis$ helm fetch stable/redis --version 3.6.0
$ helm serve [options]- 로컬 리포지토리로 사용할 웹 서버를 시작한다.
- 옵션
--address: 서버가 개방할 주소(기본값은 127.0.0.1)--repo-path: 차트 리포지토리가 될 로컬 디렉터리 경로
$ helm install 차트리포지토리/차트명 [optinos]- 차트를 이용해 어플리케이션을 설치한다.
- 옵션
--dry-run: 설치 시뮬레이션을 수행한다.--name: 릴리즈명(미지정 시 자동 생성)-f, --value: YAML 파일의 경로 또는 URL(여러 개 지정 가능)--version: 차트의 버전 지정
$ helm upgrade 릴리즈명 차트리포지토리명/차트명 [options]- 기존에 설치된 릴리즈를 업데이트한다.
- 옵션
-f, --values: YAML 파일의 경로 혹은 URL(여러 개 지정 가능)--version: 차트의 버전--install: 릴리즈가 존재하지 않을 경우 새로 설치를 진행--reuse-values: 마지막 릴리즈의 값을 재사용하고 새로운 값을 merge
$ helm list- 설치된 릴리즈의 목록을 확인한다.
- 옵션
--deleted: 삭제된 릴리즈를 목록에 포함--namespace: 지정한 네임스페이스의 릴리즈만을 확인
$ helm get [options] 릴리즈명- 설치된 릴리즈의 상세 정보를 YAML 포맷으로 출력한다.
- 옵션
--version: 릴리즈의 버전
$ helm delete [options] 릴리즈명- 설치된 릴리즈를 삭제한다.
- 옵션
purge: 릴리즈를 삭제하고 릴리즈명을 해제한다.