DevOps/Docker

Docker(3) - Docker 라이프사이클 및 유용한 명령어

재성스 2024. 8. 20. 15:19
반응형

Docker 라이프 사이클

Docker 라이프 사이클이란 Docker 컨테이너가 생성되고 종료될 때까지의 일련의 단계를 의미한다. 이 라이프 사이클은 컨테이너의 상태를 관리하고, 이를 통해 애플리케이션의 배포 및 관리를 효율적으로 할 수 있게 해준다. 

이전 포스팅 글에 이어서 설치한 이미지로 Docker의 라이프 사이클을 이해해보자

1. 컨테이너 생성 

앞서 포스팅한 블로그에서 컨테이너는 이미지라는 설계도를 기반으로 실체화된 인스턴스가 컨테이너라 설명했다. 따라서, Docker 이미지를 기반으로 컨테이너를 생성하며, 이 과정에서 컨테이너는 고유한 ID(Container id)를 가지며 필요에 따라 다양한 설정(환경 변수, 네트워킹, 볼륨 등)을 할 수 있다. 

IMAGE 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가 자동으로 이 컨테이너를 삭제하도록 함.

반응형