Oh My Algorithm
Concept Guide브리지 · 포트 매핑

네트워크와 포트 (Networking)

같은 브리지 네트워크에 속한 컨테이너들은 각자 사설 IP를 받고 서비스 이름만으로 서로를 찾습니다. 하지만 이 네트워크는 호스트 바깥에서 보이지 않기 때문에, 외부에서 접근하려면 `-p 8080:80` 처럼 호스트 포트를 컨테이너 포트에 연결해 줘야 합니다. 컨테이너끼리는 이름으로, 바깥에서는 포트 매핑으로 — 이 둘을 구분하는 것이 핵심입니다.

01네트워크와 포트 (Networking)

컨테이너 셋을 같은 브리지 네트워크에 띄웠습니다. 각자 사설 IP를 하나씩 받습니다.

사용자 정의 네트워크에는 내장 DNS 가 있어 컨테이너 이름이 곧 호스트 이름이 됩니다. api 는 db 의 IP를 몰라도 db:5432 로 붙습니다.

IP는 재시작할 때마다 바뀔 수 있지만 이름은 그대로입니다. 그래서 설정 파일에는 IP가 아니라 서비스 이름을 씁니다.

여기까지는 전부 네트워크 안쪽 이야기입니다. 이 경계는 바깥에서 보이지 않습니다.

외부에서 접근하려면 -p 8080:80 으로 호스트 포트를 컨테이너 포트에 연결해야 합니다. 요청은 NAT 를 거쳐 web:80 으로 전달됩니다.

매핑하지 않은 포트는 바깥에서 닿을 수 없습니다. 화살표가 아예 없다는 것이 곧 경로가 없다는 뜻입니다. api 와 db 를 노출하지 않는 것 자체가 기본 방어선입니다.

네트워크가 다르면 이름으로도 통신할 수 없습니다. 네트워크를 나누는 것이 곧 격리 경계를 나누는 것입니다.

Clientmy-net · bridgeweb:80172.18.0.2api:3000172.18.0.3db:5432172.18.0.4
1 / 7

정리

안쪽은 서비스 이름으로, 바깥은 포트 매핑으로. 노출은 필요한 포트 하나만 열고 나머지는 네트워크 안에 둡니다.

직접 해보기 · Network

바깥 · 호스트my-netother-netwebapidb바깥에서 닿음 · web이름으로 통신 · web↔api, web↔db, api↔db서비스를 눌러 네트워크와 공개 여부를 바꿔 보세요

02 쉽게 이해하기

For Everyone
🔑핵심 동작

같은 사용자 정의 네트워크 안에서는 컨테이너 이름이 그대로 DNS 이름이 됩니다. 바깥에서 닿으려면 호스트 포트를 컨테이너 포트에 매핑해야 하고, 매핑하지 않은 포트는 경로 자체가 없습니다.

💡쉽게 말하면

Docker 는 기본 브리지 네트워크를 만들고 컨테이너마다 사설 IP를 줍니다.

사용자 정의 네트워크에서는 내장 DNS 가 컨테이너 이름을 IP로 풀어 주므로 `db:5432` 처럼 이름으로 접속합니다.

외부 트래픽은 포트 매핑(NAT)으로 호스트 포트 → 컨테이너 포트로 전달되고, 매핑하지 않은 포트는 바깥에서 닿을 수 없습니다.

서로 다른 네트워크에 있는 컨테이너는 이름으로도 통신할 수 없습니다.

📍어디에 쓰나
  • 마이크로서비스 간 통신 설정
  • 포트 충돌 해결
  • 외부 노출 범위 최소화
  • 네트워크 분리로 격리 수준 조정

03 자주 묻는 질문

FAQ
네트워크와 포트 (Networking)란 무엇인가요?+

같은 브리지 네트워크에 속한 컨테이너들은 각자 사설 IP를 받고 서비스 이름만으로 서로를 찾습니다. 하지만 이 네트워크는 호스트 바깥에서 보이지 않기 때문에, 외부에서 접근하려면 `-p 8080:80` 처럼 호스트 포트를 컨테이너 포트에 연결해 줘야 합니다. 컨테이너끼리는 이름으로, 바깥에서는 포트 매핑으로 — 이 둘을 구분하는 것이 핵심입니다.

네트워크와 포트 (Networking)은(는) 어디에 사용하나요?+

마이크로서비스 간 통신 설정, 포트 충돌 해결, 외부 노출 범위 최소화, 네트워크 분리로 격리 수준 조정

네트워크와 포트 (Networking)를 쉽게 비유하면?+

같은 사용자 정의 네트워크 안에서는 컨테이너 이름이 그대로 DNS 이름이 됩니다. 바깥에서 닿으려면 호스트 포트를 컨테이너 포트에 매핑해야 하고, 매핑하지 않은 포트는 경로 자체가 없습니다.