Docker 라이프 사이클
Docker 라이프 사이클이란 Docker 컨테이너가 생성되고 종료될 때까지의 일련의 단계를 의미한다. 이 라이프 사이클은 컨테이너의 상태를 관리하고, 이를 통해 애플리케이션의 배포 및 관리를 효율적으로 할 수 있게 해준다.
이전 포스팅 글에 이어서 설치한 이미지로 Docker의 라이프 사이클을 이해해보자
1. 컨테이너 생성
앞서 포스팅한 블로그에서 컨테이너는 이미지라는 설계도를 기반으로 실체화된 인스턴스가 컨테이너라 설명했다. 따라서, Docker 이미지를 기반으로 컨테이너를 생성하며, 이 과정에서 컨테이너는 고유한 ID(Container id)를 가지며 필요에 따라 다양한 설정(환경 변수, 네트워킹, 볼륨 등)을 할 수 있다.
위 이미지 ID를 통해 컨테이너를 생성할 수 있으며, 명령어는 다음과 같다.
# 컨테이너 생성
docker create {이미지ID}
# (전체) 생성된 컨테이너의 상태 확인
docker ps -a
이미지 아이디를 통해 컨테이너를 생성 할 수 있으며, 이 단계에서 컨테이너는 생성되지만, 실행되지 않는 것이 특징이다.
ps 명령어를 통해 생성한 컨테이너의 상태를 확인할 수 있다.
2. 컨테이너 시작
이 단계에서는 생성된 컨테이너를 시작하여 실제로 실행한다.
# 컨테이너 시작
docker start {컨테이너ID}
# (전체) 시작된 컨테이너의 상태 확인
docker ps -a
# 참고로 run 명령어를 사용하면 이미지를 설치하고 컨테이너의 생성과 실행을 동시에 적용할 수 있다.
# Docker 이미지 설치 및 컨테이너 생성과 실행을 동시에 작업
docker run -d --name tc tomcat
- 위 명령어에서 -d 는 detach 모드를 의미하며, 백그라운드에서 실행할 수 있도록 하는 옵션이다. --name은 컨테이너의 별명(alias)을 지정해주는 것이고, 그 뒤에 설치할 이미지를 지정하면 이 명령어 하나로 이미지 설치 및 생성과 실행을 동시에 작업할 수 있다.
- 이 글에서는 컨테이너의 라이프 사이클을 컨테이너 ID를 통해 작업하고 있지만, 컨테이너의 별명을 통해서도 관리할 수 있다.
3. 컨테이너 일시 정지 및 재개
# 컨테이너 일시 정지
docker pause {컨테이너 ID}
# (전체) 시작된 컨테이너의 상태 확인
docker ps -a
# 컨테이너 일시 정지
docker unpause {컨테이너 ID}
# (전체) 시작된 컨테이너의 상태 확인
docker ps -a
4. 컨테이너 중지 및 삭제
stop 명령어를 통해 컨테이너의 실행을 중지할 수 있으며, 이 명령어를 실행하면 컨테이너 내의 모든 프로세스가 종료된다. 그러나, 중지된 상태로 유지되므로 컨테이너 자체를 삭제하려는 경우 rm 명령어를 통해 삭제해야된다.
참고로, 컨테이너 제거는 중지된 컨테이너만 가능하다.
# 컨테이너 일시 정지
docker stop {컨테이너 ID}
# (전체) 시작된 컨테이너의 상태 확인
docker ps -a
# 컨테이너 일시 정지
docker rm {컨테이너 ID}
# (전체) 시작된 컨테이너의 상태 확인
docker ps -a
5. 이미지 삭제
# 이미지 삭제
docker rmi {이미지ID}
# (전체) 설치된 이미지 목록 확인
docker images
유용한 명령어
포트포워딩으로 컨테이너 생성 및 실행
docker run -d --name tc -p 80:8080 tomcat
컨테이너 내부 셸 실행
docker exec -it tc /bin/bash
컨테이너 로그 확인
docker logs tc # stdout, stderr
호스트 및 컨테이너 간 파일 복사
docker cp <path> <to container>:<path>
docker cp <from container>:<path> <path>
도커 컨테이너 또는 이미지 모두 삭제
# 컨테이너 중지와 삭제
docker stop `sudo docker ps -a -q`
docker rm `sudo docker ps -a -q`
# 이미지 삭제
docker rmi `docker images -q`
임시 컨테이너 생성
docker run -d -p 80:8080 --rm --name tc consol/tomcat-7.0
- 옵션 --rm을 통해 컨테이너가 중지되면 Docker가 자동으로 이 컨테이너를 삭제하도록 함.
'DevOps > Docker' 카테고리의 다른 글
Docker(6) - 볼륨 마운트 (0) | 2024.08.21 |
---|---|
Docker(5) - 환경 변수 (0) | 2024.08.21 |
Docker(4) - Docker 이미지 레이어 (0) | 2024.08.21 |
Docker(2) - 도커를 위한 환경세팅 및 도커 레지스트리 (0) | 2024.08.20 |
Docker (1) - 컨테이너와 Docker 기초 개념 (0) | 2024.08.20 |