개요
"attach"를 직역하면 '붙이다', '첨부하다' 는 의미이고, "detach"는 '분리하다'는 의미입니다. 본 글에서는 Docker에서의 Attach mode와 Detach mode에 대해서 정리하고자 합니다.
Attach Mode란❓
Attach mode는 컨테이너의 표준 입력(stdin), 출력(stdout), 오류(stderr) 스트림에 연결되어 실시간으로 상호작용할 수 있는 실행 방식입니다.
이 모드는 디버깅이나 실시간 로그 확인 등 컨테이너 내부의 상태를 직접 모니터링하거나 작업할 때 유용합니다.
위와 같이 docker run 명령을 실행하면, 다른 명령어를 입력할 수 없으며, 프로세스가 막힌 것을 확인할 수 있습니다.
즉, 더 이상 명령어를 실행할 수 없고, 이는 터미널이 차단된 상태로, 컨테이너가 포어그라운드(Foreground)에서 실행 중임을 의미합니다.
이때 컨테이너의 출력은 터미널에 직접 표시됩니다.
Detach Mode란❓
Detached mode는 컨테이너를 백그라운드에서 실행하는 방식으로, -d 옵션을 사용하여 실행합니다.
이 모드에서는 컨테이너 ID만 출력되고, 컨테이너가 터미널과 분리되어 실행되므로, 다른 명령어를 계속 입력할 수 있습니다.
위와 같이 docker start 명령어로 중지된 컨테이너를 다시 실행하면, 컨테이너는 Detached 모드로 실행됩니다. 이는 컨테이너가 백그라운드에서 실행되어 터미널과 연결되지 않는 것을 의미합니다.
이처럼 터미널이 컨테이너에 연결되지 않기 때문에, docker ps와 같은 다른 명령어를 계속 입력할 수 있으며 컨테이너의 실행 상태도 확인할 수 있습니다.
docker start 명령어는 기본적으로 Detached 모드(백그라운드 실행)로 동작하도록 설계되어 있습니다.
Attach Mode & Detach Mode 확인해보기
Course Goal에 텍스트를 입력하면 웹 페이지에 해당 텍스트가 출력되고, 동시에 터미널에도 출력되는 간단한 예제입니다.
Detach Mode
docker start 명령어는 기본적으로 Detach 모드로 실행됩니다. 이번에는 run에 -d 옵션을 사용하여 Attach -> Detach mode로 컨테이너를 실행해보겠습니다
따라서 컨테이너가 백그라운드에서 실행되어 터미널과 연결되지 않습니다. Course Goal에 'Dettached Mode'라고 입력해도 터미널에서는 어떤 출력도 확인할 수 없습니다.
Attach Mode
동일한 이미지로 새 컨테이너를 3001번 포트에서 docker run 명령어로 생성하면, 기본값인 Attach 모드로 실행됩니다.
이 경우 터미널이 컨테이너와 연결되어 Course Goal에 'Atached Mode'라고 입력하면 터미널에서 해당 텍스트가 출력되는 것을 확인할 수 있습니다.
단, 터미널이 컨테이너에 연결된 상태이므로 다른 명령어는 입력할 수 없습니다.
Docker의 Foreground와 Background 실행 모드
Foreground 모드
# Foreground 모드로 실행
docker run nginx
- 컨테이너가 터미널에 직접 연결되어 실행
- 컨테이너의 출력이 터미널에 실시간으로 표시
- docker run 명령어의 기본 실행 모드
Background 모드
# Background 모드로 실행
docker run -d nginx
- 컨테이너가 터미널과 분리되어 백그라운드에서 실행
- 터미널에서 다른 명령어 입력이 가능
- -d 옵션을 사용하여 실행
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker에서 컨테이너와 이미지 식별을 위한 이름 및 태그 활용 알아보기 (0) | 2024.12.30 |
---|---|
[Docker] Docker cp로 컨테이너 ↔ 로컬 간 파일 복사하기 (0) | 2024.12.29 |
[Dokcer] 도커 레이어 시스템 이해하기: 이미지와 컨테이너의 구성 원리 (0) | 2024.12.17 |
[Docker] EXPOSE 명령어와 docker run -p 옵션의 차이점 알아보기 (0) | 2024.12.01 |
[Docker] Docker Compose로 멀티 컨테이너 애플리케이션 쉽게 관리하기 (1) | 2024.08.12 |