도커 실행 유형

mohadang·2022년 3월 13일
0

도커

목록 보기
3/26
post-thumbnail

attach 모드 실행(-i -t)

-i -t는 컨테이너 내부로 진입하도록 attach 가능한 상태로 설정한다.
컨테이너 내부로 진입하면 사용자 입출력이 가능하다.

-i(interactive) : 도커 컨테이너에 붙여지지 않아도 표준 입력(stdin)을 열어둔 채로 유지
-t(tty) : pseudo-TTY를 할당

detach 모드 실행(-d)

-d 는 detached 모드로 컨테이너를 실행한다.
detached 모드는 컨테이너를 백그라운드에서 동작하는 애플리케이션으로써 실행하도록 설정한다.
detached 모드에서는 사용자 입출력 할 수 없다.

도커를 실행하는 방법

ubuntu:14.04, centos:7과 같은 대부분의 기본 이미지들은 컨테이너를 시작할 때 /bin/bash를 커맨드로 설정해 실행함으로써 배시 셸을 쓸 수 있게 설정한다.
그러나 -d 옵션으로 run을 실행하면 입출력이 없는 상태로 컨테이너를 실행한다.
컨테이너 내부에서 프로그램이 터미널을 차지하는 포그라운드 상태로 실행되기에 사용자의 입력 받지 않는다.

detach 모드인 컨테이너는 반드시 컨테이너에서 프로그램이 실행돼야 하며, 포그라운드 프로그램이 실행되지 않으면 컨테이너는 종료된다

컨테이너는 각기 하나의 모니터를 기본적으로 가지고 있다고 생각하면 이해하기 쉽다.

detach 모드로 생성된 컨테이너에는 attach 명령어를 쓰는 것이 의미가 없다. attach를 쓰면 컨테이너에서 실행 중인 프로그램의 로그 출력을 보게 될 뿐이다.
그러나 exec 명령어를 이용하면 컨테이너 내부의 셸을 사용할 수 있다.

docker exec -i -t wordpressdb /bin/bash
  • mysql 컨테이너 내부에 /bin/bash 프로세스 실행
  • -i -t 옵션을 사용해 bash 셸을 쓸 수 있게 유지.

exec 명령어를 사용하면 컨테이너 내부에서 명령어를 실행한 뒤 그 결괏값을 반환받을 수 있다.
여기서는 -i -t 옵션을 추가해 /bin/bash를 상호 입출력이 가능한 형태로 exec 명령어를 사용하였다.(기존에 포그라운드로 실행되는 프로그램은 유지되고 새로운 bash 셸을 실행하는 것)
옵션을 추가하지 않고 단순히 exec만 쓰면 컨테이너 내부에서 실행한 명령어에 대한 결과만 반환한다.

출처

  • 책 : 시작하세요 도커/쿠버네티스
profile
mohadang

0개의 댓글