본문 바로가기
Linux

Docker - detach/attach(백그라운드/포그라운드) 이해

by 올엠 2024. 2. 23.
반응형

이거를 정리해야 하나 싶다가도,

필자 역시 처음으로 옵션을 찾아보고 이해하는데 도움이 되고자 여기에 정리해본다.

가장 쉽게 본다면, 아래 표와 같이 정리 할 수  있다.

Docker 명령

  • 백그라운드 실행 (Detached mode)

명령(기본): start, Docker 옵션: --detach(-d), Docker Compose 옵션: -d

  • 포그라운드 실행 (Attached mode)

명령(기본): run, Docker 옵션: --attach(-a), Docker Compose 옵션: 없음

도커는 기본적으로 detach attach 모드로 사용하는 명령마다 기본 실행모드가 정해진다.

이를 무시하고 정해진 모드로 동작하도록 구성할 있는 옵션이 --detach/--attach 옵션이다.

 

포그라운드 실행(Attached mode), run

포그라운드 실행은 현재 실행하는 터미널(콘솔)에 컨테이너의 동작 상태를 출력하는 모드라고 할 수 있다.

이렇게 실행할 경우, 컨테이너의 동작상태를 볼 수 있어서 유용하다.

다만 터미널과 프로세스가 함께 부모, 자식으로 연결되므로, 터미널이 끊어질 경우 컨테이너가 종료되게 된다.

따라서 테스트시 이용하는 것이 바람직하다. 

다만 일반적인 터미널 프로그램과 다르게 터미널에서 Ctrl + C 를 눌려서도 강제로 종료할 수 없고,

터미널을 닫으면 종료된다. 따라서 만약 포그라운드로 실행한다면, 따로 터미널을 실행해서 관리해야 한다.

Docker Compose 역시 기본적으로 포그라운드로 실행된다.

docker run 명령을 사용하면 기본적으로 포그라운드로 실행된다. 이를 변경하기 위해서는 --detach 또는 -d 옵션을 이용할 수 있다.

docker run --detach

백그라운드 실행(detached mode) start

도커를 서비스형태로 실행할 때 가장 많이 사용되는 방식으로, 터미널에 관계 없이 지속적으로 실행할 수 있도록 구성할 때 유용하다. 대신 현재 동작 상태를 확인하기 위해서는 Docker에서 제공하는 log 옵션을 이용해야 한다.

docker log <컨테이너id>

docker start 명령을 사용하면, 기본적으로 백그라운드 실행으로 동작하지만 run 옵션과 차이가 있는데, 컨테이너에만 사용이 가능하다는 것이다. run은 컨테이너를 생성할 때 사용하는 명령이고, start는 이미 존재하는 컨테이너를 실행할 때 사용할 수 있는데, 이때는 자동으로 백그라운드 모드로 동작하게 된다.

백그라운드/포그라운드 전환

start/run 옵션을 이용해서 기본값 설정을 옵션을 이용해서 변경할 수 있다.

백그라운드로 실행하고자 한다면, --detach / -d 을 입력하여 run을 통해 생성한 컨테이너를 바로 백그라운드로 실행 할 수 있으며, start로 백그라운드로 실행되는 컨테이너를 --attach / -a 옵션을 이용해서 포그라운드로 상태를 확인할 수 있도록 실행이 가능하다.

docker run --detach

docker start --attach

 

반응형