1. 기본 구조

$ docker 커맨드 [옵션] 대상 [인자]

- 커맨드는 상위 커맨드(무엇을)와 하위 커맨드(어떻게)로 나뉨

- 옵션은 커맨드의 세세한 설정을 지정

- 대상은 구체적인 이름을 지정

- 인자는 대상에 전달할 값을 지정

[사진 1] 도커 라이프사이클

 

2. 컨테이너 조작 관련 커맨드 (상위 커맨드 container)

- 컨테이너를 실행하거나 종료하고, 목록을 확인하는 등 컨테이너를 다루기 위해 사용

- 생략 가능 커맨드는 "docker 하위 커맨드"로 실행 가능

- ls의 생략형은 ps (예시 : docker ps -a)

하위 커맨드 내용 생략 가능 여부 주요 옵션 설명
start 컨테이너 실행 O -a STDOUT/STDERR 및 순방향 신호 연결
-i 컨테이너의 STDIN 연결
stop 컨테이너 중지
컨테이너를 삭제하려면 반드시 중지해야함
O - -
create 도커 이미지로부터 컨테이너 생성 O --name 컨테이너 이름 지정
-e 환경변수 설정
-p 포트 번호 지정
-v 볼륨 마운트
run 도커 이미지를 내려받고 컨테이너를 생성 실행
docker image pull, docker contauner create, docker container start 명령을 하나로 합친 것과 같음
O --name --name 컨테이너 이름
컨테이너 이름 지정
-p -p 호스트 포트번호:컨테이너 포트번호
포트번호 지정
-v -v 호스트 디스크:컨테이너 디렉터리
볼륨 마운트
--net --net 네트워크 이름
컨테이너를 네트워크에 연결
-e -e 환경변수 이름=값
환경변수 설정
-d 백그라운드 실행
-i 컨테이너에 터미널(키보드)을 연결
-t 특수 키를 사용 가능하도록 함
-help 사용 방법 안내
rm 정지 상태의 컨테이너 삭제 O -f 실행 중인 컨테이너 강제 제거(SIGKILL 사용)
-v 컨테이너와 연결된 익명 볼륨 제거
exec 실행중인 컨테이너 속에서 프로그램을 실행 O -i 컨테이너에 터미널(키보드)을 연결
-t 유사 TTY 할당
ls 컨테이너 목록 출력 O -a 모든 컨테이너 목록 출력
CONTAINER ID : 식별자
IMAGE : 컨테이너 생성 시 사용한 이미지 이름
COMMAND : 컨테이너 실행 시에 실행하도록 설정된 프로그램 이름
CREATED : 컨테이너 생성 후 경과 시간
STATUS : 컨테이너의 현재 상태
PORTS : 컨테이너에 할당된 포트
NAMES : 컨테이너 이름
cp 도커 컨테이너와 도커 호스트 간 파일 복사 O - -
commit 도커 컨테이너를 이미지로 변환 O - -

 

3. 이미지 조작 관련 커맨드 (상위 커맨드 image)

- 이미지를 내려받거나 검색하는 등 이미지와 관련된 기능을 실행

- 생략 가능 커맨드는 "docker 하위 커맨드"로 실행 가능

- rm의 생략형은 rmi (예시 : docker rmi)

하위 커맨드 내용 생략 가능 여부  주요 옵션 설명
pull 이미지 내려 받기 O - -
rm 이미지 삭제 O - -
ls 이미지의 목록 출력 X - -
build 이미지 생성 O -t 이름 및 선택적으로 'name:tag' 형식의 태그

 

4. 볼륨 조작 관련 커맨드 (상위 커맨드 volume)

- 볼륨 생성, 목록 확인, 삭제 등 볼륨과 관련된 기능을 실행

- 볼륨이란 컨테이너에 마운트 가능한 스토리지를 뜻함

하위 커맨드 내용 생략 가능 여부 주요 옵션  설명
create 볼륨 생성 X --name 볼륨 이름 지정
inspect 볼륨의 상세 정보 출력 X - -
ls 볼륨의 목록 출력 X -a 모든 볼륨 목록 출력
prune 현재 마운트되지 않은 볼륨 모두 삭제 X - -
rm 지정한 볼륨 삭제 X - -

 

5. 네트워크 조작 관련 커맨드 (상위 커맨드 network)

- 도커 네트워크의 생성, 삭제, 컨테이너의 네트워크 접속 및 접속 해제 등 도커 네트워크와 관련된 기능을 실행

- 도커 네트워크란 도커 요소간의 통신에 사용하는 가상 네트워크

하위 커맨드 내용 생략 가능 여부 주요 옵션  설명
connect 컨테이너를 도커 네트워크에 연결 X - -
disconnect 컨테너의 도커 네트워크 연결 해제 X - -
create 도커 네트워크 생성 X - -
inspect 도커 네트워크의 상세 정보 출력 X - -
ls 도커 네트워크의 목록 출력 X - -
prune 현재 컨테이너가 접속하지 않은 모든 네트워크 삭제 X - -
rm 지정한 네트워크 삭제 X - -

 

6. 그 밖의 상위 커맨드

상위 커맨드 내용
checkpoint 현재 상태를 일시적으로 저장한 후, 나중에 해당 시점의 상태로 되돌릴 수 있음
node 도커 스웜의 노드를 관리
plugin 플러그인을 관리
secret 도커 스웜의 비밀값 정보를 관리
service 도커 스웜의 서비스를 관리
stack 도커 스웜 또는 쿠버네티스에서 여러 개의 서비스를 합쳐 구성한 스택을 관리
swarm 도커 스웜을 관리
system 도커 엔진의 정보를 확인

 

7. 단독으로 쓰이는 커맨드

- 도커 허브의 검색이나 로그인에 사용되는 커맨드

단독 커맨드 내용 주요 옵션 설명
login 도커 레지스트리에 로그인 -u 계졍명
-p 패스워드
logout 도커 레지스트리에서 로그아웃 - -
search 도커 레지스트리 검색 - -
version 도커 엔진 및 명령행 도구의 버전 출력 - -

 

8. 참고

 

Docker run reference

 

docs.docker.com

 

'기타 > 도커' 카테고리의 다른 글

도커(Docker)란  (0) 2022.11.15

1. 도커(Docker)

- 다양한 프로그램과 데이터를 각각 독립된 환경(=컨테이너)에 격리하고, 컨테이너를 다루는 기능을 제공하는 소프트웨어

- 도커 엔진을 설치해야 컨테이너를 생성하고 구동시킬 수 있으며, 컨테이너를 생성하기 위해 이미지가 필요

- 용량이 허락하는 한 여러개의 컨테이너를 하나의 도커에 생성 가능

 

※ 테이터나 프로그램을 격리해야하는 이유

① 다른 프로그램과 특정 파일이나 디렉터리를 공유하거나 같은 경로에 설정 정보를 저장하는 경우가 있음

② 때문에, 하나의 프로그램의 업데이트가 다른 하나의 프로그램에 영향을 끼칠 수 있음

③ 따라서, 컨테이너를 사용해 각각의 프로그램을 격리한다면 공유로 인한 문제를 해결

2. 도커의 제약 사항

- 종류와 상관없이 리눅스 운영체제가 필요

- 컨테이너에서 동작시킬 프로그램 또한 리눅스용 프로그램

- 따라서, 도커는 기본적으로 리눅스 운영체제에서만 동작

- 즉, 도커는 리눅스 컴퓨터에 독립된 격리 환경을 만드는 것이며, 리눅스에서만 동작하고, 컨테이너에서 동작할 프로그램 또한 리눅스용 프로그램

 

※  호스트 OS가 Window나 macOS일 경우 가상 머신등을 이용

3. 동작원리

- 모든 컨테이너에는 도커엔진으로부터 명령을 프로그램에 전달하고, 수행 결과를 반환 하기위해 운영체제의 일부 기능을 포함

4. 이미지

- 이미지는 컨테이너를 만드는데 사용

- 컨테이너로도 이미지를 만들 수 있음

- 도커 허브에서 제공하는 공식 이미지(안정성이 좋으나, 제한적인 환경)커스텀 이미지(안정성이 낮으나, 환경설정이 가능)이 있음

5. 컨테이너 생애주기와 데이터 저장

- 컨테이너 생애주기 : 오래된 컨테이너를 폐기하고 새로운 컨테이너를 만드는 일련의 과정

- 데이터 저장 : 도커가 설치된 물리적 서버의 디스크를 마운트하여 데이터 저장

- 새로운 컨테이너를 생성할 경우 디스크를 마운트하여 데이터를 공유할 수 있음

6. 장단점 및 용도

① 장점

- 독립된 환경 : 여러 프로그램을 띄울 수 있음 = 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있음

- 이미지 생성 : 도커 허브에서 이미지를 공유하여 교체가 쉽고 업데이트가 쉽다 = 서버 관리가 용이

- 커널이 없음 : 배포판을 바꿀 수 있고 커널이 없어 가벼움 = 다루기 쉬움

 

② 단점

- 리눅스용 소프트웨어만 지원

- 호스트 서버의 장애가 모든 컨테이너에 영향을 끼침

 

③ 용도

- 동일한 환경을 여러개 생성하여 편리하게 공유

- 운영환경 적용전 격리된 환경을 이용한 신규 버전 테스트

- 동일 서버가 여러대 필요할 경우 여러 컨테이너를 사용하여 비용 및 시간 절약

'기타 > 도커' 카테고리의 다른 글

명령어  (0) 2022.11.21

+ Recent posts