본문 바로가기

STUDY/Docker & Kubernetes: 실전 가이드 -2022년판

3. Docker 이미지/컨테이너 관리하기1

--help

 

> docker --help
...
  ps          List containers
...
> docker ps

 

지금까지 docker run 으로 이미지를 컨테이너로 실행하고, 실행중인 컨테이너를 docker stop으로 중지시킨것처럼 docker에는 많은 명령어가 존재한다. 도커에는 수많은 명령어와 옵션이 존재하는데 이를 모두 외울수는 없다. 이때 쓸 수 있는것이 --help이다. --help를 명령어와 함께 실행하면 사용할 수 있는 명령어와 옵션을 알 수 있다. docker --help를 통해 컨테이러 리스트를 볼 수 있는 docker ps를 발견하고 실행하였다. 

 

> docker ps --help
...
  -a, --all             Show all containers (default shows just running)
...
> docker ps -a

 

docker ps의 결과는 실행중인 컨테이너만 보여준다. 중지된 상태의 컨테이너도 보고싶어서 docker ps --help로 -a 옵션을 달면 모든 컨테이너를 볼 수 있다는 것을 알았다. docker ps -a를 실행한 결과 모든 컨테이너를 볼 수 있었다.

 

 


docker run, docker start

 

> docker run {imageId}    // 이미지로 새로운 컨테이너를 실행한다
> docker start {containerId}    // 중지된 기존 컨테이너를 재실행한다

 

> docker ps -a
...
컨테이너 4개
...
> docker run {imageId}
> docker ps -a
...
컨테이너 5개
...
> docker start {containerId}
> docker ps -a
...
컨테이너 5개
...

도커 컨테이너를 시작하는 방법에는 두가지가 있다. docker run 또는 docker start이다. 두 명령어의 차이점은 run의 경우 이미지를 바탕으로 새로운 컨테이너를 띄우는 것이고, start는 중지된 컨테이너를 다시 시작하는 것이다. docker run을 실행하고 docker ps -a의 결과를 보면 새로운 컨테이너가 생긴 것을 알 수 있고, docker start 이후 docker ps -a의 결과를 보면 기존 컨테이너의 상태가 바뀐것을 알 수 있다. 실행할 도커 이미지가 바뀐것이 아니라면 기존 도커 컨테이너를 재시작하는게 자원을 아낄 수 있다.

 

> docker run {imageId}
새로운 터미널 입력 불가능

> docker start {containerId}
> 
새로운 터미널 입력 가능

run과 start의 또다른 차이는 attached/detached 이다. docker run을 실행하면 새로운 터미널 입력이 차단되고 실행중인 컨테이너의 로그(출력)이 나오고 이를 컨테이너에 붙어있다(attached)라고 한다. docker start는 터미널 입력이 차단되지 않고 고 이를 컨터이너에 붙어있지 않다(detached)고 한다. 

 

> docker run -d {imageId}
>
터미널 입력이 차단되지 않는다. (detached)

> docker attach {containerId}
실행중인 컨테이너에 붙고, 터미널 입력이 차단된다.

docker run 명령어를 실행할 때도 detached 상태로 실행하려면 -d 옵션을 붙이면 된다. 또 이미 detached로 실행된 컨테이너에 다시 붙기 위해서는 docker attach 명령어를 사용하면 된다. -d 옵션과 attach 명령어 모두 알고만 있으면 나중에 기억이 안나도 docker run --help, docker --help를 실행하여 다시 찾아볼 수 있다.

 

 


docker logs

 

> docker logs {containerId}
컨테이너의 로그가 출력된다.

> docker logs -f {containerId}
연결이 종료되지 않고 지속적으로 로그가 출력된다.

docker attach로 컨테이너에 붙으면 로그를 볼 수 있지만, 컨테이너에 붙기 이전의 로그를 확인할 수 없다. 실행이후의 모든 로그, 혹은 특정 조건으로 로그를 조회하려면 docker logs 명령어를 실행해서 확인해야 한다.

 

 

 

728x90