기본 패턴
bash
docker run --name web -d -p 8080:80 nginx:alpine설명
- 컨테이너는 기본적으로 격리된 네트워크 안에서 실행되므로, 외부에서 접근하려면 포트를 공개해야 합니다.
-p 8080:80은 호스트의 8080 포트를 컨테이너의 80 포트에 연결한다는 뜻입니다.- 포트를 공개하지 않으면 브리지 네트워크 안의 다른 컨테이너나 호스트 내부에서는 보일 수 있어도, 브라우저나 외부 요청에 바로 노출되지는 않습니다.
- bridge 네트워크는 같은 호스트 안의 컨테이너들을 묶는 기본적인 네트워크 드라이버입니다.
- 특히 사용자 정의 bridge 네트워크를 쓰면 컨테이너 이름 기반 통신이 더 편해져, 앱과 DB를 묶는 실전 구성이 쉬워집니다.
짧은 예제
bash
docker network create app-net
docker run -d --name db --network app-net postgres:16
docker run -d --name app --network app-net -p 3000:3000 my-app:latest빠른 정리
| 개념 | 의미 |
|---|---|
-p 8080:80 | 호스트 8080을 컨테이너 80에 연결 |
| 미공개 포트 | 외부에서 직접 접근 불가 |
| 기본 bridge | 기본 네트워크, 단순 실험에 적합 |
| 사용자 정의 bridge | 이름 기반 통신과 관리가 더 편함 |
| 대표 패턴 | 앱은 포트 공개, DB는 내부 네트워크만 연결 |
주의할 점
모든 서비스 포트를 무조건 호스트에 공개할 필요는 없습니다. 보통 웹 앱만 공개하고, 데이터베이스나 캐시는 내부 네트워크에서만 통신하게 두는 편이 더 안전합니다.
참고 링크
2 sources