본문 바로가기
Etc

Docker - Bridge 네트워크 확인/변경

by 올엠 2022. 10. 19.
반응형

잘 연결되던 Docker간의 연결이 갑자기 연결이 되지 않는다면 이부분을 의심해보면 좋다.

바로 Docker 내부에서 사용하는 네트워크 대역이다.

Docker는 Container를 실행할 때 Docker내에 Network 환경을 가져가는데 기본적으로 사용하는 대역이 172.17.0.2/16 대역이다.

네트워크 확인

현재 사용하는 Docker Container가 어떤 모드로 동작하는지 확인해보자. network 명령을 통해 확인 할 수 있다.

docker network ls

 

이후 bridge 모드가 현재 동작하는 내용은 inspect 명령을 통해서 확인할 수 있다.

docker network inspect bridge

현재 Bridge 모드로 동작하고 있고, 172.17.0.0/16 서브넷을 사용하는 것으로 확인된다.

Bridge 모드란

Docker가 동작하는 기본 모드이다. 기본적으로 NAT 모드라고 생각하면 된다. Docker Container는 내부에 별도의 서브넷을 가지고 있고 docker-proxy를 이용해서 연결되는 방식이다.
Container가 내부 네트워크로 동작하기 때문에 기본적으로 접근이 되지 않고, 외부 연결을 위해서 Port를 EXPOSE 설정을 해주어야 한다. 

Host 모드란

Docker를 호스트 하는 머신과 동일한 레벨로 Network 를 가져가는 모드로써, 호스트와 동일한 네트워크의 정보를 받아서 사용하게 된다. 
호스트 레벨과 동일하기 때문에 접근이 자유로운 장점이 있지만, 만약 다수의 Docker Container를 실행해야 한다면 호스트 네트워크가 혼잡해지며, 보안적으로 쉽게 네트워크 노출이 되기 때문에 사용하지 않는 것이 좋다.

만약 현재 Docker를 실행하는 호스트 머신(상위 머신)이 172 대역을 사용한다면, Docker 에서 접근하고자 할때 Bridge모드의 Network 경로가 동일하기 때문에 접근하지 못하게 된다.

 

이를 해결 하기 위해선

1. 호스트 머신의 네트워크를 172 대역이 아닌 네트워크로 지정

2. Docker가 사용하는 Bridge 모드의 네트워크를 변경

하면 사용이 가능하다.

 

호스트 네트워크는 변경이 어려울 수 있지만, 만약 변경이 가능하면 이부분을 변경하는 것으로 해결 할 수 있다.

호스트 네트워크 변경이 어렵다면, Docker의 기본 Bridge 네트워크를 변경하도록 하자.

해당 부분에 대해서는 아래 기술 문서를 보면 잘 나와있는데, Docker의 deamon.json의 bip를 변경하여 해결이 가능하다.

Linux와 Mac의 deamon.json 파일 위치는 다음과 같다.

Linux
/etc/docker/daemon.json

OSX(Mac)
/Users/사용자명/.docker/daemon.json

기본 환경 구성은 아래와 같이 구성이 가능하다.

{
  "bip": "192.168.1.1/24",
  "fixed-cidr": "192.168.1.0/25",
  "fixed-cidr-v6": "2001:db8::/64",
  "mtu": 1500,
  "default-gateway": "192.168.1.254",
  "default-gateway-v6": "2001:db8:abcd::89",
  "dns": ["10.20.1.2","10.20.1.3"]
}

 

참고

 

Use bridge networks

 

docs.docker.com

반응형