Docker bridge 네트워크에서 포트를 게시하면 호스트의 주소와 컨테이너 포트 사이에 전달 규칙이 생깁니다. 8080:80 표기에서 호스트 주소를 생략하면 기본적으로 모든 호스트 주소에 게시될 수 있고, Linux의 Docker 규칙은 UFW가 보는 경로와 다를 수 있습니다.
루프백 주소에 게시했더라도 Docker 문서에 기록된 구버전 예외가 적용될 수 있습니다. 게시 주소, 네트워크 모드, 방화벽 백엔드와 실제 Engine 버전을 함께 확인해야 합니다.
게시 포트는 단순히 컨테이너 내부 문을 여는 설정이 아닙니다
Docker Engine의 Port publishing 문서는 bridge 컨테이너 포트를 -p 또는 --publish로 공개하면 호스트 주소와 컨테이너 포트 사이에 매핑된다고 설명합니다. 게시 표기에서 호스트 주소를 생략하면 기본적으로 모든 IPv4·IPv6 호스트 주소에 노출될 수 있습니다. 기본 주소와 예외는 아래 비교표의 수치에 맞춰 확인합니다. 이는 컨테이너 안의 애플리케이션이 80번을 듣는 것과 구별되는 호스트 측 게시 설정입니다.
Linux에서 Docker는 bridge 네트워크의 포트 게시와 네트워크 격리를 위해 firewall rule을 만듭니다. Docker 공식 문서에 따르면 Ubuntu의 UFW 설정은 Docker가 NAT에서 처리하는 경로보다 뒤에 적용되어 게시된 컨테이너 트래픽을 예상처럼 거르지 못할 수 있습니다. 이것을 모든 host firewall·백엔드·배포판에서 동일한 우회로 일반화하면 안 됩니다. Docker Engine은 iptables와 nftables 백엔드를 지원하고 네트워크 모드별 규칙도 다릅니다.
예약된 주소의 가상 매핑을 비교합니다
| 창작 게시 표기 | 예상 HostIp 범위 | 질문할 점 |
|---|---|---|
8080:80 | 생략 시 기본 전체 주소 0.0.0.0, IPv6 ::로 게시될 수 있음 | 외부·다른 인터페이스에서 접근 가능한지와 조직의 방화벽 규칙을 확인 |
127.0.0.1:8080:80 | 루프백 주소로 게시 | Engine 28.0.0 미만 릴리스는 같은 L2 망 접근 예외를 주의 |
192.0.2.10:8080:80 | 지정한 호스트 IPv4 주소에 바인딩 | IP forwarding, gateway mode, direct routing 조건도 확인 |
8080:80 + UFW의 INPUT 차단 가정 | Docker NAT 경로가 INPUT/OUTPUT보다 앞서 처리될 수 있음 | UFW 규칙만으로 게시 포트가 차단된다고 단정하지 않음 |
Docker 문서는 localhost 게시도 모든 환경에서 완전히 격리된다고 말하지 않습니다. 비교표에 적은 구버전에서는 같은 L2 segment의 다른 호스트가 localhost 게시 포트에 도달할 수 있는 예외를 명시합니다. 또 IP forwarding이 켜진 NAT 모드에서는 지정한 호스트 IP가 직접 연결 경로로 예상과 다르게 이용될 수 있습니다. 이 주의는 특정 버전·경로에 해당하므로 모든 설치 동작으로 확대하지 않습니다.
설정을 바꾸지 않고 확인할 자료
- 대상 환경의 Docker Engine 버전과 rootful/rootless, Desktop 여부를 확인합니다.
- 컨테이너의 네트워크 모드가 bridge, host, ipvlan, macvlan 중 무엇인지 구분합니다.
- 게시된 HostIp·HostPort·컨테이너 Port의 실제 메타데이터를 승인된 구성 자료에서 확인합니다.
- Engine firewall backend가 iptables인지 nftables인지, gateway mode와 IP forwarding 조건을 검토합니다.
- UFW·firewalld 등 호스트 방화벽 규칙의 체인 경로와 Docker 문서가 설명하는 packet flow를 대조합니다.
- 허가된 테스트 환경에서만 예상 출발지별 접근 확인을 계획합니다. 이 글은 실제 주소나 서비스를 스캔하지 않습니다.
한 화면의 방화벽 규칙만으로 차단을 입증하지 못합니다
게시 정보가 없으면 외부에서 포트가 열리지 않는다는 뜻일 수 있지만, host network나 다른 네트워크 경로의 서비스까지 차단됐다는 의미는 아닙니다. 반대로 규칙이 보여도 실제 도달 가능성은 인터페이스, 라우팅, 앞단 장비와 방화벽 정책에 좌우됩니다. 설정 상태와 승인된 경로 테스트 결과를 따로 기록하고, 어느 범위에서 확인했는지 명시합니다.
복습: 루프백 게시면 항상 안전한가요?
문제: Docker Engine이 구버전인 환경에서 포트가 루프백 주소에 게시됐습니다. 같은 L2 망의 다른 호스트가 절대 접근할 수 없다고 단정해도 될까요?
정답: 안 됩니다. Docker 문서는 비교표의 구버전에서 같은 L2 구간의 다른 호스트가 localhost 게시 포트에 접근할 수 있는 예외를 경고합니다. 정확한 구성과 경로를 허가된 환경에서 확인해야 합니다.
정답을 가리고 확인해 보세요
이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.
가상 Linux Engine 27.x에서 127.0.0.1:8080:80이 게시됐고 UFW INPUT에 8080 차단 규칙이 있다고 합니다. 접근이 완전히 차단됐다고 결론 내릴 수 없는 이유 두 가지를 쓰세요.
정답과 해설 확인
Docker 문서는 28.0.0 이전 같은 L2 망 접근 예외를 경고하며, Linux Docker의 NAT packet path가 UFW INPUT보다 앞서 처리될 수 있습니다. 정확한 버전·경로·백엔드의 승인된 확인이 필요합니다.게시 주소·Engine 버전·라우팅·방화벽 체인을 따로 검토해야 합니다. 예제는 문서 기반 가상 사례이며 실제 서비스에 접근하지 않았습니다.