[도커 기초 시리즈 포스팅]
[Docker] 기초 시리즈 (1) 도커의 개념과 사용이유
[Docker] 기초 시리즈 (2) Ubuntu에 도커 엔진 설치
[Docker] 기초 시리즈 (3) 이미지와 컨테이너 관계, 도커 아키텍처
[Docker] 기초 시리즈 (4) 도커 이미지의 구조
[Docker] 기초 시리즈 (5) 도커 이미지 다루기 - Docker Hub(Registry)
[Docker] 기초 시리즈 (6) 도커 이미지 다루기 - 이미지 직접 생성
[Docker] 기초 시리즈 (7) 자주 사용하는 Dockerfile 명령어
[Docker] 기초 시리즈 (8) 자주 사용하는 도커 명령어 모음
[Docker] 기초 시리즈 (9) 도커 컨테이너 - 개념, 기본 사용법 (Now)
[Docker] 기초 시리즈 (10) 도커 컨테이너 - Volume 관리
❑ 도커 사용의 목적은 컨테이너 생성이다
- 도커의 다양한 명령어, 옵션을 사용해서 최종적으로 달성하고자 하는 것은 하나의 프로세스가 동작하는 '컨테이너'를 생성하는 것이다.
❑ 컨테이너 사용법
1. 컨테이너 생성
1.1. 컨테이너는 이미지를 이용해 생성한다
- 컨테이너는 이미지를 이용해 생성할 수 있다. 즉, 하나의 이미지로 여러 개의 컨테이너를 생성할 수 있으므로 1:N 관계다.
- 이미지와 컨테이너는 객체지향에서 클래스와 인스턴스 관계와 같다. 이미지는 컨테이너를 생성할 수 있는 명세서 또는 레시피로 이해할 수 있고, 컨테이너는 그 레시피를 이용해 생성한 객체인 것이다.
1.2. 컨테이너 생성과 시작
1) 컨테이너 생성 : create
$ docker create [이미지]
- docker create / run 명령어 모두 이미지가 없을 경우 자동으로 pull을 먼저 수행해 이미지를 다운받음
- [참고] 도커 이미지 목록 확인 : $ docker images
2) 컨테이너 시작 : start
$ docker start [컨테이너 ID 또는 이름]
3) 컨테이너 생성 및 시작 : run
$ docker run [이미지]:[태그]
- docker create / run 명령어 모두 이미지가 없을 경우 자동으로 pull을 먼저 수행해 이미지를 다운받음
Run options
-d | 백그라운드 모드로 실행(뒤에서 - 안 보이는 곳(백그라운드)에서 알아서 돌라고 하기) |
-i | 도커 호스트의 표준 입력(키보드, 마우스 등)을 컨테이너와 연결 (i: interactive) |
-t | TTY(리눅스 Teletypewriter) 할당. 터미널 명령어를 정상적으로 수행하도록 함. i와 t 옵션은 보통 쉘 스크립트 작성이 필요한 컨테이너를 실행할 때 한 쌍으로 묶어(docker run -it) 사용한다 |
--name [이름] | 컨테이너 이름 지정 |
-p [Host Port]:[컨테이너 Port] | 호스트 머신의 포트와 컨테이너의 포트를 연결 |
--rm | 컨테이너가 종료되면(내부에서 돌아가는 작업이 끝나면) 컨테이너를 제거 |
-v [Host 디렉토리]:[컨테이너 디렉토리] | 호스트와 컨테이너의 디렉토리를 연결 |
1.3. 컨테이너 조회 및 상세 확인
1) 컨테이너 조회 : ps
$ docker ps
- ps만 입력할 경우 동작중인 컨테이너만 조회
- -a 옵션: 모든 컨테이너 조회
2) 컨테이너 상세 확인 : inspect
$ docker inspect [컨테이너 ID 또는 이름]
- 서비스 운영시 컨테이너에 문제가 생기면 docker inspect를 보통 이용함
1.4. 컨테이너 일시중지, 종료
1) 컨테이너 일시중지 : pause
$ docker pause [컨테이너 ID 또는 이름]
2) 컨테이너 재개 : unpause
$ docker unpause [컨테이너 ID 또는 이름]
3) 컨테이너 종료 : stop
$ docker stop [컨테이너 ID 또는 이름]
- SIGTERM 시그널 전달
4) 모든 컨테이너 종료 : stop
$ docker stop $(docker ps -a -q)
5) 컨테이너 강제 종료 : kill
$ docker kill [컨테이너 ID 또는 이름]
- SIGKILL 시그널 전달
- [참고] stop은 안전한(gracefully) 종료, kill은 강제 종료
1.5. 컨테이너 삭제
1) 컨테이너 삭제 : rm
$ docker rm [컨테이너 ID 또는 이름]
- 실행중인 컨테이너는 삭제 불가함
2) 컨테이너 강제 삭제 : rm -f
$ docker rm -f [컨테이너 ID 또는 이름]
- -f 옵션: 컨테이너 강제 종료 후 삭제 (SIGKILL 시그널 전달)
3) 컨테이너 실행 종료 후 자동 삭제 : run --rm
$ docker run --rm [이미지]:[태그]
4) 중지된 모든 컨테이너 삭제 : container prune
$ docker container prune
❑ 도커 컨테이너 라이프사이클
1.1. 주요 라이프사이클
- 도커 컨테이너는 Created, Running, Paused, Deleted, Stopped 다섯가지 상태를 가질 수 있다
- Running(실행) 상태로 갈 수 있는 방법은 두 가지다
- docker run로 컨테이너를 생성과 동시에 시작
- docker create로 컨테이너 생성 후 docker start로 시작
1.2. 상세 라이프사이클
'DevOps > Docker' 카테고리의 다른 글
[Docker] 기초 시리즈 (10) 도커 컨테이너 - Volume 관리 (0) | 2022.06.07 |
---|---|
[Docker] 기초 시리즈 (5) 도커 이미지 다루기 - Docker Hub(Registry) (0) | 2022.06.07 |
[Docker] 기초 시리즈 (8) 자주 사용하는 도커 명령어 모음 (0) | 2022.05.14 |
[Docker] 기초 시리즈 (7) 자주 사용하는 Dockerfile 명령어 (0) | 2022.05.08 |
[Docker] 기초 시리즈 (6) 도커 이미지 다루기 - 이미지 직접 생성 (0) | 2022.04.30 |