728x90
docker run 명령어에서 -d와 -itd의 차이점을 설명해 드리겠습니다.
1️⃣ -d 옵션만 사용 (docker run -d -p ...)
docker run -d -p 4000:4000 ###_api
✅ 특징:
- -d (--detach): 컨테이너를 백그라운드 모드에서 실행함
- 실행 후 터미널에서 빠져나와도 컨테이너가 계속 실행됨
- 컨테이너의 로그를 보려면 docker logs <컨테이너 이름>을 사용해야 함
- 컨테이너에 직접 들어가려면 docker exec -it <컨테이너 이름> /bin/bash 또는 docker attach <컨테이너 이름>을 사용해야 함
🔹 사용 예시:
일반적으로 서버 애플리케이션(Nginx, API 서버, DB 등) 을 실행할 때 사용
(즉, 백그라운드에서 계속 실행되어야 하는 경우)
2️⃣ -itd 옵션 사용 (docker run -itd -p ...)
docker run -itd -p 4000:4000 ###_api
✅ 특징:
- -i (--interactive): 표준 입력(STDIN)을 유지하여 컨테이너와 상호작용 가능
- -t (--tty): 가상 터미널을 할당하여 터미널 환경을 제공
- -d (--detach): 컨테이너를 백그라운드에서 실행
🔹 주요 차이점:
- -d 옵션만 쓰면 컨테이너가 백그라운드에서 실행되지만, 직접 입력은 불가능함
- -itd를 쓰면 백그라운드에서 실행되면서도 나중에 직접 접근할 수 있도록 터미널이 준비됨
- docker exec -it <컨테이너 이름> /bin/bash를 사용하면 바로 쉘로 접근 가능
🔹 사용 예시:
- CLI 도구나 개발 환경(예: Ubuntu 컨테이너, Node.js 실행 환경 등)을 실행할 때 사용
- 상호작용이 필요한 애플리케이션을 실행할 때 사용
- 예를 들어, 컨테이너 안에서 직접 명령을 입력하고 싶을 때
3️⃣ -d vs -itd 차이점 요약
옵션백그라운드 실행상호작용(입력 가능)터미널 제공
| -d | ✅ | ❌ (입력 불가) | ❌ |
| -itd | ✅ | ✅ (입력 가능) | ✅ |
✅ 결론
- 서버 애플리케이션을 실행할 때는 -d 만 사용하면 충분합니다.
- 터미널에서 직접 명령어를 입력할 가능성이 있다면 -itd를 사용하는 것이 더 편리합니다.
어떤 방식이든 나중에 접근하려면 docker exec -it <컨테이너 이름> /bin/bash를 사용하면 됩니다! 😊
728x90
'공부 > Infra' 카테고리의 다른 글
| --restart=unless-stopped (0) | 2025.02.04 |
|---|---|
| nano, vim, vi (0) | 2025.02.04 |
| docker ./gradlew: not found (0) | 2025.02.03 |
| [Docker] Docker Hub Image 활용(Nginx, MySQL) (1) | 2023.10.11 |
| [Jenkins] CI/CD, Pipe Line 작성 및 설정, 빌드자동화 (1) | 2023.10.10 |