그림과 실습으로 배우는 도커 & 쿠버네티스를 토대로 작성했습니다.
도커 엔진 시작/종료
도커 명령어의 기본
docker 커맨드 대상
커맨드에는 상위 커맨드와 하위 커맨드가 있음
예시
docker image pull penguin
옵션
예시
-d
--all
--name penguin
- 나 -- 는 취향 차이
대상
예시
container start [옵션] penguin
컨테이너 조작 관련 커맨드(상위 커맨드 container)
docker container 하위_커맨드 옵션
- start: 컨테이너를 실행
- stop: 컨테이너를 정지
- create: 도커 이미지로부터 컨테이너를 생성
- run: 도커 이미지를 내려받고 컨테이너를 생성해 실행함(다운로드는 필요한 경우에만)
= docker image pull + docker container create + docker container start
- rm: 정지 상태의 컨테이너를 삭제
- exec: 실행 중인 컨테이너 속에서 프로그램을 실행
- ls: 컨테이너 목록을 출력
- cp: 도커 컨테이너와 도커 호스트 간에 파일을 복사
- commit: 도커 컨테이너를 이미지로 변환
이미지 조작 관련 커맨드(상위 커맨드 image)
docker image 하위_커맨드 옵션
- connect: 컨테이너를 도커 네트워크에 연결
- disconnect: 컨테이너의 도커 네트워크 연결을 해제
- create: 도커 네트워크를 생성
- inspect: 도커 네트워크의 상세 정보를 출력
- ls: 도커 네트워크의 목록을 출력
- prune: 현재 컨테이너가 접속하지 않은 네트워크를 모두 삭제
- rm: 지정한 네트워크를 삭제
그 밖의 상위 커맨드
- checkpoint: 현재 상태를 일시적으로 저장한 후, 나중에 해당 시점의 상태로 되돌릴 수 있다. 현재 실험적 기능이다.
- node: 도커 스웜의 노드를 관리하는 기능
- plugin: 플러그인을 관리하는 기능
- secret: 도커 스웜의 비밀값 정보를 관리하는 기능
- service: 도커 스웜의 서비스를 관리하는 기능
- stack: 도커 스웜 또는 쿠버네티스에서 여러 개의 서비스를 합쳐 구성한 스택을 관리하는 기능
- swarm: 도커 스웜을 관리하는 기능
- system: 도커 엔진의 정보를 확인하는 기능
대부분 도커 스웜(Docker Swarm)과 관련된 커맨드로서 초보자 수준에서는 사용할 일이 없음
컨테이너의 생성과 삭제, 실행, 정지
컨테이너를 생성하고 실행하는 커맨드: docker run(docker container run)
docker run (옵션) 이미지 (인자)
주요 옵션
- --name 컨테이너_이름: 컨테이너 이름을 지정함
- -p 호스트포트번호:컨테이너포트번호: 포트번호를 지정함
- -v 호스트디스크:컨테이너디렉터리: 볼륨을 마운트함
- --net=네트워크_이름: 컨테이너를 네트워크에 연결함
- -e 환경변수_이름=값: 환경변수를 설정함
- -d: 백그라운드로 실행함
- -i: 컨테이너에 터미널(키보드)을 연결함
- -t: 특수 키를 사용 가능하도록 함
- -help: 사용 방법 안내 메시지를 출력함
docker ps 커맨드
컨테이너 목록 출력
docker ps (옵션)
도커 네트워크 생성/삭제
도커 네트워크를 생성하는 커맨드
docker network create 네트워크_이름
도커 네트워크를 삭제하는 커맨드
docker network rm 네트워크_이름
그 외 도커 네트워크 관련 커맨드
- connect: 네트워크에 컨테이너를 새로이 접속
- disconnect: 네트워크에서 컨테이너의 접속을 끊음
- create: 네트워크를 생성
- inspect: 네트워크의 상세 정보를 확인
- ls: 네트워크의 목록을 확인
- prune: 현재 아무 컨테이너도 접속하지 않은 네트워크를 모두 삭제
- rm: 지정한 네트워크를 삭제
MySQL 컨테이너 실행 시에 필요한 옵션과 인자
docker run --name 컨테이너_이름 -dit
--net=네트워크_이름
-e MYSQL_ROOT_PASSWORD=MySQL_루트_패스워드
-e MYSQL_DATABASE=데이터베이스_이름
-e MYSQL_USER=MySQL_사용자이름
-e MYSQL_PASSWORD=MySQL_패스워드 mysql
--character-set-server=문자_인코딩
--collation-server=정렬_순서
--default-authentication-plugin=인증_방식
사용된 옵션
- --net: 네트워크 이름
- --name: MySQL 컨테이너 이름
- -dit: 실행 옵션
- -e MYSQL_ROOT_PASSWORD: MySQL 루트 패스워드
- -e MYSQL_DATABASE: MySQL 데이터베이스 이름
- -e MYSQL_USER: MySQL 사용자 이름
- -e MYSQL_PASSWORD: MySQL 패스워드
사용된 인자
- --character-set-server=: 문자 인코딩
- --collation-server=: 정렬 순서
- --default-authentication-plugin=: 인증 방식
파일 복사
docker cp 원본_경로 복사할_경로
컨테이너로 파일을 복사
docker cp 호스트_경로 컨테이너_이름:컨테이너_경로
호스트로 파일을 복사
docker cp 컨테이너_이름:컨테이너_경로 호스트_경로
볼륨 마운트
스토리지 영역 만들기
볼륨 생성(볼륨 마운트)
docker volume create 볼륨_이름
볼륨 삭제(볼륨 마운트)
docker volume rm 볼륨_이름
주요 하위 커맨드
- create: 볼륨을 생성
- inspect: 볼륨의 상세 정보를 출력
- ls: 볼륨의 목록을 출력
- prune: 현재 마운트되지 않은 볼륨을 모두 삭제
- rm: 지저한 볼륨을 삭제
스토리지를 마운트하는 커맨드
바인드 마운트 커맨드
docker run (생략) -v 스토리지_실제_경로:컨테이너_마운트_경로 (생략)
볼륨 마운트 커맨드
docker run (생략) -v 볼륨_이름:컨테이너_마운트_경로 (생략)
볼륨 백업
docker run --rm -v 볼륨명:/moto -v 백업_저장_폴더명:/target busybox tar cvzf /sake/백업파일이름.tar.gz -C /source