본문 바로가기
실생활 IT 지식 블로그 실생활 IT 지식 블로그

Docker Bridge와 Host 네트워크 모드, 시놀로지 NAS에서는 무엇이 다를까?

IT왕세자 읽는 시간 약 15분

시놀로지 NAS에서 Container Manager를 이용해 Docker 컨테이너를 설치하다 보면 네트워크 설정에서 Bridge와 Host라는 용어를 접하게 됩니다.

처음 Docker를 사용하는 경우에는 두 방식의 차이가 단순히 네트워크 연결 방식의 차이라고 생각하기 쉽습니다.

하지만 실제로는 컨테이너가 NAS의 네트워크를 어떻게 사용하는지, 포트는 어떻게 연결되는지, 다른 컨테이너와 어떻게 통신하는지에 차이가 있습니다.

특히 컨테이너를 설치한 뒤 웹 브라우저에서 접속되지 않거나, 포트 설정이 예상과 다르게 동작하는 경우 네트워크 모드가 원인일 수 있습니다.

시놀로지 NAS에서 Docker를 여러 개 운영할 계획이라면 Bridge와 Host의 차이를 이해해 두는 것이 좋습니다.

Docker Bridge 네트워크란?

Bridge는 Docker에서 가장 일반적으로 사용하는 네트워크 방식입니다.

쉽게 표현하면 컨테이너가 NAS의 네트워크와 별도의 가상 네트워크 환경에서 실행되는 방식입니다.

구조를 단순하게 표현하면 다음과 같습니다.

인터넷

↓

공유기

↓

시놀로지 NAS

↓

Docker Bridge

↓

컨테이너

컨테이너는 Docker가 만들어 놓은 네트워크를 통해 외부와 통신합니다.

이 방식에서는 컨테이너가 사용하는 포트를 NAS의 포트와 연결해야 외부에서 해당 서비스에 접근할 수 있습니다.

예를 들어 컨테이너 내부에서 웹 서비스가 8080 포트를 사용한다고 가정해 보겠습니다.

Container Manager에서 다음과 같이 설정할 수 있습니다.

NAS 8081 → 컨테이너 8080

이 경우 NAS의 8081 포트로 들어온 요청이 Docker를 통해 컨테이너의 8080 포트로 전달됩니다.

Bridge 방식의 핵심은 포트 매핑

Bridge 네트워크를 사용할 때 가장 중요한 개념이 포트 매핑입니다.

예를 들어 다음과 같은 컨테이너가 있다고 가정해 보겠습니다.

컨테이너 내부 포트: 80

NAS 호스트 포트: 8080

그러면 외부에서는 일반적으로 다음과 같이 접속합니다.

http://NAS주소:8080

Docker가 NAS의 8080 포트와 컨테이너의 80 포트를 연결해 주는 것입니다.

따라서 Bridge 방식에서 컨테이너가 정상적으로 실행되고 있는데도 접속이 되지 않는다면 포트 매핑이 제대로 설정되어 있는지 먼저 확인해야 합니다.

Host 네트워크 모드란?

Host 모드는 Bridge와 구조가 다릅니다.

컨테이너가 별도의 Docker 네트워크를 사용하는 대신 NAS의 호스트 네트워크를 직접 사용하는 방식입니다.

쉽게 표현하면 다음과 같습니다.

인터넷

↓

공유기

↓

시놀로지 NAS

↙    ↘

NAS 서비스 Host 컨테이너

컨테이너가 NAS의 네트워크 환경을 직접 사용하기 때문에 Bridge에서 사용하는 별도의 포트 매핑이 필요하지 않은 경우가 많습니다.

예를 들어 애플리케이션이 8080 포트에서 실행되도록 되어 있다면 Host 모드에서는 NAS의 네트워크에서 해당 포트를 직접 사용하게 됩니다.

Bridge와 Host의 가장 큰 차이

두 방식을 간단하게 비교하면 다음과 같습니다.

구분BridgeHost
네트워크Docker 가상 네트워크NAS 호스트 네트워크
포트 매핑일반적으로 필요일반적으로 불필요
네트워크 격리상대적으로 높음낮음
포트 충돌 가능성호스트 포트 매핑 시 발생NAS 포트와 직접 충돌 가능
설정 난이도비교적 관리하기 쉬움서비스에 따라 단순할 수 있음
컨테이너 네트워크 분리가능제한적
여러 컨테이너 운영유리포트 관리가 중요

다만 실제 동작은 Docker 버전과 컨테이너 이미지, 네트워크 구성에 따라 달라질 수 있으므로 특정 서비스의 공식 문서를 함께 확인하는 것이 좋습니다.

Bridge는 왜 많이 사용할까?

Bridge의 가장 큰 장점은 컨테이너의 네트워크를 NAS와 어느 정도 분리해서 관리할 수 있다는 것입니다.

예를 들어 NAS에 다음과 같은 서비스를 운영한다고 가정해 보겠습니다.

컨테이너 A → NAS 8081

컨테이너 B → NAS 8082

컨테이너 C → NAS 8083

각 컨테이너의 내부 서비스 포트가 동일하더라도 NAS에서 사용하는 포트를 다르게 지정하면 여러 컨테이너를 동시에 운영할 수 있습니다.

이런 구조는 Docker 서비스를 여러 개 운영하는 NAS에서 관리하기 편리합니다.

Host는 포트 매핑이 단순하다

Host 네트워크 모드는 포트 매핑 과정이 단순해지는 장점이 있습니다.

컨테이너가 NAS의 네트워크를 직접 사용하는 구조이기 때문에 Bridge처럼

NAS 포트 → 컨테이너 포트

형태의 연결을 별도로 구성하지 않아도 되는 경우가 많습니다.

특히 네트워크 검색이나 특정 브로드캐스트·멀티캐스트 기능을 사용하는 애플리케이션은 Host 네트워크를 요구하거나 Host에서 더 잘 작동하는 경우가 있습니다.

하지만 편리한 만큼 주의해야 할 부분도 있습니다.

Host 모드에서는 포트 충돌을 주의해야 한다

Host 네트워크의 가장 중요한 단점 중 하나가 포트 충돌입니다.

컨테이너가 NAS의 네트워크를 직접 사용하기 때문에 컨테이너가 사용하는 포트가 NAS에서 이미 사용 중이라면 충돌할 수 있습니다.

예를 들어 NAS의 다른 서비스가 8080 포트를 사용하고 있는데 Host 네트워크의 컨테이너도 8080을 사용하려 한다면 문제가 발생할 수 있습니다.

Bridge에서는 NAS 8081 → 컨테이너 8080 처럼 호스트 포트를 변경할 수 있습니다.

하지만 Host에서는 컨테이너가 NAS의 네트워크를 직접 사용하기 때문에 이런 포트 충돌을 더 주의해서 관리해야 합니다.

Bridge에서는 컨테이너 포트를 변경하지 않아도 된다

Bridge 방식의 장점 중 하나는 컨테이너 내부 서비스 포트를 그대로 유지하면서 NAS에서 사용하는 포트만 변경할 수 있다는 것입니다.

예를 들어 두 개의 컨테이너가 모두 내부에서 8080을 사용하더라도

컨테이너 A

NAS 8081 → 컨테이너 8080

컨테이너 B

NAS 8082 → 컨테이너 8080

으로 구성할 수 있습니다.

따라서 여러 웹 서비스를 하나의 NAS에서 운영할 때 Bridge 방식이 관리하기 편한 경우가 많습니다.

컨테이너끼리 통신할 때도 차이가 있다

Docker에서 여러 컨테이너를 운영하면 컨테이너끼리 통신해야 하는 경우가 있습니다.

예를 들어 다음과 같은 구조입니다.

웹 애플리케이션

↓

MariaDB

이때 Docker 네트워크를 적절하게 구성하면 컨테이너끼리 직접 통신할 수 있습니다.

Bridge 기반의 사용자 정의 네트워크를 사용하면 컨테이너 간 통신 구조를 명확하게 구성할 수 있습니다.

반면 Host 네트워크는 컨테이너가 NAS의 네트워크 환경을 공유하기 때문에 일반적인 Bridge 네트워크와는 통신 구조가 달라집니다.

따라서 여러 컨테이너가 서로 연결되는 서비스를 구성할 때는 각 컨테이너가 어떤 네트워크 모드와 네트워크에 연결되어 있는지 확인해야 합니다.

Bridge에서 외부 접속이 안 되는 이유

Bridge 네트워크를 사용하는 컨테이너가 정상적으로 실행되는데 웹 브라우저에서 접속되지 않는다면 먼저 포트 매핑을 확인해야 합니다.

예를 들어 컨테이너가 내부에서 3000 포트를 사용하고 있는데 NAS의 호스트 포트를 연결하지 않았다면 외부에서 바로 접근할 수 없습니다.

다음과 같이 매핑해야 할 수 있습니다.

NAS 3001 → 컨테이너 3000

그런 다음 http://NAS주소:3001로 접속합니다.

즉, Bridge 방식에서는 컨테이너 내부 포트와 실제 접속 포트를 혼동하지 않는 것이 중요합니다.

Host에서는 포트 매핑을 잘못 이해하면 안 된다

Host 네트워크를 선택했는데 Container Manager에서 일반적인 Bridge 방식처럼 포트 매핑을 설정하려고 하면 혼란이 생길 수 있습니다.

Host 모드에서는 컨테이너가 NAS의 네트워크를 직접 사용하기 때문에 Docker의 포트 매핑 개념이 Bridge와 동일하게 적용되지 않습니다.

따라서 컨테이너가 Host 모드를 요구하는 경우에는 해당 이미지의 문서를 확인하고 컨테이너가 실제로 어떤 포트를 사용하는지 확인하는 것이 중요합니다.

어떤 경우에 Bridge를 사용하는 것이 좋을까?

일반적인 웹 서비스나 서버 프로그램을 Docker로 운영한다면 Bridge를 우선 고려하는 것이 편리한 경우가 많습니다.

예를 들어

  • 웹 서버
  • 개인용 웹 애플리케이션
  • 데이터베이스
  • 미디어 서버
  • 다운로드 서비스
  • 다양한 Docker 기반 서비스

등을 여러 개 운영한다면 각 컨테이너의 포트를 분리해 관리하기 쉽습니다.

특히 역방향 프록시를 사용하는 환경에서는 Bridge 네트워크를 활용해 컨테이너를 구성하는 경우가 많습니다.

어떤 경우에 Host를 고려할까?

Host 네트워크는 특정 서비스에서 필요할 때 사용하는 것이 좋습니다.

예를 들어 애플리케이션이

  • 네트워크 검색
  • 브로드캐스트
  • 멀티캐스트
  • NAS의 네트워크 인터페이스에 직접 접근해야 하는 기능

등을 요구한다면 Host 네트워크가 필요할 수 있습니다.

하지만 Host가 무조건 더 빠르거나 더 좋은 네트워크 모드라고 생각할 필요는 없습니다.

서비스가 특별히 Host 네트워크를 요구하지 않는다면 일반적인 Docker 서비스에서는 Bridge부터 검토하는 것이 관리 측면에서 편리할 수 있습니다.

네트워크 모드를 바꾸면 문제가 해결될까?

Bridge에서 문제가 발생했다고 해서 Host로 변경하면 무조건 해결되는 것은 아닙니다.

반대의 경우도 마찬가지입니다.

예를 들어 Bridge에서 접속되지 않는 이유가 단순히 포트 매핑 오류라면 Host로 변경하는 것보다 올바른 포트 매핑을 설정하는 것이 정확한 해결 방법입니다.

마찬가지로 권한 문제나 애플리케이션 설정 문제는 네트워크 모드를 변경해도 해결되지 않습니다.

따라서 문제가 발생했을 때는

네트워크 모드 → 포트 → 컨테이너 로그 → 애플리케이션 설정

순으로 원인을 구분하는 것이 좋습니다.

시놀로지 NAS에서는 방화벽도 확인해야 한다

네트워크 모드를 올바르게 설정했는데도 외부에서 접속되지 않는다면 DSM 방화벽도 확인해야 합니다.

Bridge든 Host든 최종적으로 NAS의 네트워크를 통해 통신하기 때문에 NAS 방화벽에서 해당 접근을 차단하고 있다면 서비스에 접속할 수 없습니다.

특히 새로운 포트를 사용하는 컨테이너를 추가한 이후부터 접속이 되지 않는다면 DSM 방화벽 규칙에 해당 포트가 영향을 받고 있는지도 확인해야 합니다.

공유기 포트포워딩과의 관계

외부 인터넷에서 Docker 컨테이너에 접근하려면 네트워크 구성에 따라 공유기의 포트포워딩이 필요할 수 있습니다.

예를 들어 Bridge 방식에서

인터넷 → 공유기 → NAS 8081 → 컨테이너 8080

구조라면 공유기에서 외부 연결을 NAS의 8081 포트로 전달해야 합니다.

하지만 모든 Docker 서비스를 인터넷에 직접 공개할 필요는 없습니다.

특히 웹 서비스라면 역방향 프록시를 활용해 외부에 공개하는 포트를 최소화하는 방법도 고려할 수 있습니다.

보안 측면에서는 무엇이 다를까?

Bridge와 Host는 네트워크 격리 측면에서도 차이가 있습니다.

Bridge는 컨테이너가 별도의 Docker 네트워크 환경을 사용하기 때문에 네트워크를 분리해서 관리하기가 상대적으로 쉽습니다.

반면 Host는 컨테이너가 NAS의 네트워크 환경을 직접 사용하기 때문에 네트워크 격리 측면에서 더 주의할 필요가 있습니다.

따라서 Host 모드를 사용할 때는 해당 컨테이너가 실제로 어떤 포트를 열고 어떤 네트워크 통신을 하는지 확인하는 것이 좋습니다.

특히 외부에 공개되는 서비스라면 네트워크 모드만 선택할 것이 아니라 방화벽, 인증, HTTPS, 접근 제한 등을 함께 고려해야 합니다.

Bridge와 Host를 선택하는 기준

시놀로지 NAS에서 Docker 네트워크 모드를 선택할 때는 다음과 같이 생각하면 이해하기 쉽습니다.

일반적인 Docker 서비스

→ Bridge 우선 고려

여러 컨테이너를 동시에 운영

→ Bridge가 관리하기 편한 경우가 많음

포트 매핑을 이용해 서비스를 분리

→ Bridge

네트워크 검색이나 브로드캐스트 기능이 중요한 서비스

→ Host를 고려

애플리케이션 공식 문서에서 Host 네트워크를 요구

→ Host 고려

특별한 이유가 없는 일반적인 웹 서비스

→ Bridge부터 검토

다만 최종적으로는 사용하는 컨테이너 이미지의 공식 문서에서 요구하는 네트워크 구성을 확인하는 것이 가장 정확합니다.

마무리

시놀로지 NAS에서 Docker의 Bridge와 Host 네트워크 모드는 단순히 설정 이름만 다른 것이 아닙니다.

두 방식은 컨테이너가 NAS의 네트워크를 사용하는 구조 자체가 다릅니다.

Bridge는 컨테이너가 별도의 Docker 네트워크 환경을 사용하고, NAS의 호스트 포트와 컨테이너 포트를 연결하는 방식입니다.

반면 Host는 컨테이너가 NAS의 호스트 네트워크를 직접 사용하는 방식입니다.

간단하게 정리하면 다음과 같습니다.

Bridge

→ 별도의 Docker 네트워크 사용

→ 포트 매핑 필요

→ 여러 컨테이너의 포트 관리가 편리

→ 일반적인 Docker 서비스에 적합

Host

→ NAS 네트워크 직접 사용

→ 별도의 포트 매핑이 일반적인 Bridge 방식과 다름

→ 포트 충돌에 주의

→ 네트워크 검색이나 특정 네트워크 기능이 필요한 서비스에서 고려

따라서 시놀로지에서 Docker 컨테이너를 운영할 때는 무조건 Host를 선택하거나 Bridge를 선택하기보다 해당 서비스가 어떤 네트워크 기능을 필요로 하는지 먼저 확인하는 것이 중요합니다.

특히 일반적인 웹 서비스라면 Bridge를 이용해 포트를 명확하게 분리하는 방식이 관리하기 편할 수 있습니다.

반대로 네트워크 검색이나 브로드캐스트 등 특수한 네트워크 기능을 사용하는 애플리케이션이라면 Host 모드가 필요한지 확인해야 합니다.

결국 중요한 것은 “어떤 네트워크 모드가 더 좋은가?”가 아니라 “내가 설치하려는 컨테이너에 어떤 네트워크 모드가 필요한가?”를 판단하는 것입니다.

IT왕세자

IT왕세자
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.