Docker

[Docker] 도커의 기본적인 사용법, 실습

상똥 2024. 7. 25. 17:17

[1. 컨테이너의 기본 명령어]

1. 명령어와 대상

docker 커맨드 대상

- 컨테이너를 다루는 모든 명령은 'docker'로 시작한다

- 커맨드는 상위커맨드와 하위커맨드로 나뉜다

- 상위커맨드 : '무엇을'

- 하위커맨드 : '어떻게'

- 대상 : 구체적인 이미지나 컨테이너의 이름이 들어감

- Ex) 이름이 penguin인 이미지를 컨테이너로 실행하기 위한 명령어

docker container run penguin

 

2. 옵션과 인자

docker 상위커맨드 하위커맨드 (옵션) 대상 (인자)

- 옵션 : 커맨드에 세세한 설정을 지정하는 용도로 쓰임

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

 


[2. 대표적인 명령어]

1. 주요 옵션

 

옵션 형식 내용
--name 컨테이너_이름 컨테이너 이름을 지정함
-p 호스트_포트번호:컨테이너_포트번호 포트번호를 지정함
-v 호스트_디스크:컨테이너_디렉터리 볼륨을 마운트함
--net=네트워크_이름 컨테이너를 네트워크에 연결함
-e 환경변수_이름=값 환경변수를 설정함
-d 백그라운드로 실행함
-i 컨테이너에 터미널을 연결
-t 특수 키를 사용 가능하도록 함
-help 사용 방법 안내 메시지 출력

 

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

하위커맨드 내용 생략가능여부 주요 옵션
start 컨테이너 실행 O -i
stop 컨테이너 정지 O 거의 사용하지 않음
create 도커 이미지로부터 컨테이너 생성 O --name -e -p -v 
run 도커 이미지를 내려받고 컨테이너를 생성해 실행 O --name -e -p -v -d -i -t
rm 정지 상태의 컨테이너를 삭제 O -f -v
exec 실행중인 컨테이너 속에서 프로그램 실행 O -i -t
ls 컨테이너 목록을 출력 생략형 = docker ps -a
cp 도커 컨테이너와 호스트 간에 파일을 복사 O 거의 사용하지 않음
commit 도커 컨테이너를 이미지로 변환 O 거의 사용하지 않음

 

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

하위커맨드 내용 생략가능여부 주요 옵션
pull 도커 허브 등의 리포지토리에서 이미지를 내려받음 O 거의 사용하지 않음
rm 도커 이미지를 삭제 생략형 = docker rmi 거의 사용하지 않음
ls 내려받은 이미지의 목록을 출력 X 거의 사용하지 않음
build 도커 이미지를 생성 O -t

 

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. 단독으로 쓰이는 커맨드 (상위커맨드 x)

단독커맨드 내용 주요 옵션
login 도커 레지스트리에 로그인 -u -p
logout 도커 레지스트리에 로그아웃 거의 사용하지 않음
search 도커 레지스트리를 검색 거의 사용하지 않음
version 도커 엔진 및 명령행 도구의 버전을 출력 거의 사용하지 않음

 


[3. 컨테이너 생성, 실행, 중지, 삭제]

1. 컨테이너의 생애주기

- 컨테이너를 생성, 실행하는 커맨드

docker run

- 컨테이너를 중지하는 커맨드 (실행중인 컨테이너를 삭제할 수는 없으므로, 중지시키는 단계가 필요하다)

docker stop 컨테이너_이름

- 현재 존재하는 컨테이너의 목록을 출력하는 커맨드 (중지 상태의 컨테이너 포함)

docker ps

- 컨테이너를 삭제하는 커맨드

docker rm 컨테이너_이름

※ 컨테이너 목록의 정보

항목 내용
CONTAINER ID 컨테이너 식별자로 무작위 문자열이 할당됨
IMAGE 컨테이너를 만들 때 사용한 이미지의 이름
COMMAND 컨테이너 실행 시에 실행되도록 설정된 프로그램의 이름
CREATED 컨테이너 생성 후 경과된 시간
STATUS 컨테이너의 현재 상태. Up=실행중 / Exited = 종료됨
PORTS 컨테이너에 할당된 포트번호.
호스트 포트 번호 -> 컨테이너 포트 번호 형식으로 출력
둘이 동일할 경우 -> 뒷부분은 생략됨
NAMES 컨테이너 이름

 


[4. 실습 1 :  컨테이너 생성하기]

0. 실습 정보

- 단계

① 컨테이너 생성 및 실행

② 컨테이너 상태 확인

③ 컨테이너 종료

④ 컨테이너 상태 확인

⑤ 컨테이너 삭제

⑥ 컨테이너 상태 확인

- 생성할 컨테이너의 정보

항목
컨테이너 이름 apa000ex1
이미지 이름 httpd

 

1. 실습

(1) 터미널 실행

(2) run 커맨드 실행

docker run --name apa000ex1 -d httpd

(*필자는 iterm 사용하여 container id만 출력되었음)

(3) ps 커맨드로 컨테이너가 실행중인지 확인

(4) stop 커맨드를 사용해 컨테이너 종료

(5) ps 커맨드를 사용해 컨테이너가 종료되었는지 확인

(6) rm 커맨드를 사용해 컨테이너 삭제

(7) ps 커맨드와 인자를 사용해 컨테이너가 삭제되었는지 확인

 


[5. 실습 2 : 통신 가능한 컨테이너 생성하기]

0. 실습 정보

- 단계

① 컨테이너 생성 및 실행

② 컨테이너 상태 확인

③ 컨테이너 종료

④ 컨테이너 상태 확인

⑤ 컨테이너 삭제

⑥ 컨테이너 상태 확인

- 생성할 컨테이너의 정보

항목
컨테이너 이름 apa000ex1
이미지 이름 httpd
포트 설정 8080:80

 

1. 실습

(1) 터미널 실행

(2) run 커맨드 실행

docker run --name apa000ex2 -d -p 8080:80 httpd

(*필자는 iterm 사용하여 container id만 출력되었음)

(3) ps 커맨드로 컨테이너가 실행중인지 확인

(4) 웹 브라우저를 통해 접근 가능한지 확인 localhost:8080 으로 이동

(5) stop 커맨드를 사용해 컨테이너 종료

(6) ps 커맨드를 사용해 컨테이너가 종료되었는지 확인

(7) rm 커맨드를 사용해 컨테이너 삭제

(8) ps 커맨드와 인자를 사용해 컨테이너가 삭제되었는지 확인

 


[6. 실습 3 : 이미지 삭제하기]

- 컨테이너를 삭제해도, 이미지는 남아있다

- 스토리지 용량을 고려하여 필요없는 이미지는 바로 삭제하도록 한다

 

1. 실습

(1) 터미널 실행

(2) ps 커맨드로 컨테이너가 있는지 확인

(3) ls 커맨드로 이미지 목록 확인

(4) rm 커맨드로 이미지 삭제

(5) ls 커맨드로 이미지 삭제 확인