Attached & Detached

namkun·2022년 4월 30일
0

Docker & Kubernetes

목록 보기
5/16

Run Container

컨테이너를 실행하는 방법은 두가지라고 할 수 있다.

하나는 직접 콘솔에 붙는 Attached, 다른 하나는 백그라운드에 실행시켜놓는 Detached이다.

컨테이너를 실행시키는 방법은 하나는 빌드된 이미지를 컨테이너로 실행하는 run ,하나는 기존에 실행되었던 컨테이너를 실행시키는 start 이다.

run은 기본적으로 Attached 모드로 실행된다.

커맨드를 실행시키면? 우리는 해당 콘솔에서 더이상 뭔가 입력할 수 없을 것이다.

그리고 만약에 애플리케이션 내부에서 콘솔에 뭔가 print 하게 해두었다면, 우리는 print되는 내용을 해당 콘솔에서 확인할 수 있을 것이다.

$ docker run -p 3000:80 a79f50098489
is printed?
console print!

이렇게 말이다. (해당 애플리케이션은 입력하는대로 console에 찍게했다.)

그럼 start로 시작하면 어떻게 될까?

기존에 실행해뒀던 컨테이너로 실행해보자.

$ docker start sharp_keldysh 
$

실행하고서 바로 커맨드를 입력할 수 있다.

그러나 우리는 내부 콘솔에 대해서 볼 수 없다.

Options

그러나 이러한 것들은 해당 명령어에서 강제하는 건 아니다.

그냥 default 실행방식이 그렇게 정해져있을 뿐이지, run에서 detached 모드로 실행할 수 있고, start에서 attached 모드로 실행할 수 있다.

방법은 다음처럼 커맨드에 옵션을 붙여주는 것이 있다.

default가 attached인 run 명령어에서 detached 모드로 실행하는 방법은 다음처럼 하면 된다.

$ docker run -d [image id]

그러면 다음과 같이 실행된 컨테이너 id 를 남기고 실행이 끝날 것이다.

$ docker run -p 3001:80 -d a79f50098489
d0042323a52276c901e9e47cc2103d9a8ed99bd5d35e58a7169e369350150bfb

반대로, start 명령어에서 attaced 모드로 실행하는 방법은 다음과 같다.

$ docker start -a [container name]

추가로, default가 detached인 start 명령어를 사용한 컨테이너에 접속하는 방법, 즉 실행중인 컨테이너에 attach하는 방법은 다음과 같다.

$ docker attach [container name]

이렇게 해서 아까전에 띄워놓았던 detached 된 컨테이너에 접속해보겠다.

$ docker attach sharp_keldysh 
is printed?

아까 start로 해본 것처럼 콘솔에 바로바로 출력되는 것을 알 수 있다.

마지막으로, 컨테이너에 다른 방법으로 attach 할 수 있는데, 바로 컨테이너에 출력되는 로그를 가져오는 logs 명령이다.

다음과 같이 사용하면 된다.

docker logs [container name]

그러면 해당 컨테이너의 과거에 출력된 로그에 대해 볼 수 있다.

$ docker logs peaceful_carver 
is printed?
console print!
logs test~

또한 docker의 logs의 옵션을 보면

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

-f, follow 모드로 해서 계속 로그를 수신할 수도 있다.

profile
개발하는 중국학과 사람

0개의 댓글