[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 커맨드로 이미지 삭제 확인
'Docker' 카테고리의 다른 글
[AWS EC2, Github Action, Docker, Node] CICD 배포하기(1) - Dockerfile 만들기 (0) | 2024.08.06 |
---|---|
[Docker] 도커파일 작성법 (Node.js) (0) | 2024.08.02 |
[Docker] 도커의 동작 원리 (0) | 2024.07.25 |
[Docker] 도커 기초 (0) | 2024.07.24 |