사설 네트워크 통신이 많은 서비스에서 docker를 사용할 때 주의해야할

사설 네트워크가 복잡하게 얽혀있는 서비스를 운영하는 경우, 이를 중간에서 중계하기 위해서 별도의 라우팅 작업을 하는 경우가 있습니다. 사설 대역의 경우 IP가 겹치는 경우가 종종 발생하기 때문입니다.


이때, 무심코 docker를 설치하게 되면 다음과 같은 장애가 발생할 수 있습니다.


1/ docker를 설치하면 dockerd(도커 데몬)이 함께 설치되는데, 그 과정에서 bridge 네트워크를 생성합니다. 별도로 옵션이 없다면 기본적으로 "bridge"라는 이름으로 네트워크가 생성되는 것을 확인하실 수 있습니다.


2/ bridge의 게이트웨이가 되는 docker0는 호스트와 컨테이너 간의 통신을 중계해주는 역할을 합니다. docker0는 별도의 로컬 네트워크 인터페이스로 등록됩니다. ip addr show를 통해 확인해보면 docker0의 인터페이스를 확인할 수 있습니다.


3/ 네트워크 대역을 할당하고 나면, iptable의 NAT 설정을 변경합니다. 그 과정에서 loopback 인터페이스를 제외한 로컬 네트워크로 향하는 모든 트래픽이 docker0로 향하게 됩니다. 이렇게 설정을 마치고 나서 dockerd가 실행됩니다.


4/ docker가 bridge 네트워크를 위해 할당하는 네트워크가 정해져 있습니다. 별도로 설정을 하지 않으면, "172.17.0.0/16" 을 시작으로 /16 크기의 네트워크를 순차적으로 배정합니다. daemon이 뜨면서 bridge 네트워크를 가장 먼저 생성하기 때문에 해당 네트워크 대역은 주로 "172.17.0.0/16"로 설정됩니다.


5/ 만약 다른 프로세스에서 기존에 172.17.0.0/16 대역과 통신을 하고 있었다면, 이제부터는 패킷이 모두 docker0로 향하게 됩니다. 이는 iptable에서 제어되기 때문에, 호스트 밖의 설정을 확인해서는 찾아내기 쉽지 않습니다.


6/ 기본 네트워크 대역을 바꾸려면 설치할 때 default-address-pools 라는 옵션을 추가해주면 됩니다. 해당 설정을 /etc/docker/daemon.json에 추가하고 docker를 재시작하면, 기존에 세팅했던 bridge 네트워크 대역을 직접 설정한 대역으로 변경합니다. 이때도, 당연히 기존에 통신하고 있던 대역과 겹치지 않도록 설정해야 합니다.


크게 고민하지 않고 설정했는데, 딱 걸리는 경우가 발생해서, 이번 기회에 정리해보았습니다.


https://blog.techchallengearena.com/p/docker


#docker #network #devops

사설 대역 사용 시, docker 주의사항

Techchallengearena

사설 대역 사용 시, docker 주의사항

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 6월 20일 오후 4:19

 • 

저장 14조회 1,404

댓글 0

    함께 읽은 게시물

    소프트웨어 유지보수성이라는 뜨거운 감자를 손에 넣는 법

    "

    ... 더 보기

    소프트웨어 유지보수성이라는 뜨거운 감자를 손에 넣는 법

    kr.linkedin.com

    소프트웨어 유지보수성이라는 뜨거운 감자를 손에 넣는 법

    이젠 Claude 모델이 그렇게 압도적으로 좋은 건 아닌데, Claude Code는 진짜 분명하게 좋음. 아마도 프롬프트가 잘 되어 있어서 그런 것 같음. Claude의 다른 프롬프트들은 공개해뒀는데 Claude Code용 프롬프트는 공개를 안해줌. 역시 아무리 투명하게 공개한다고 해도 진짜 좋은 건 다 기업비밀임..


    넷플릭스는 왜 WebFlux를 사용하지 않을까?

    ... 더 보기

    넷플릭스는 왜 WebFlux를 사용하지 않을까?

    kr.linkedin.com

    넷플릭스는 왜 WebFlux를 사용하지 않을까?

    이력서 노션으로 절대 쓰지 마세요.

    (다시 돌아온 노션 이력서 절기)

    ... 더 보기

     • 

    댓글 1 • 저장 9 • 조회 1,688


    < 보여서 걷는 게 아니라, 걷다 보니 길 >

    1

    ... 더 보기

    좋은 개발자가 알아야하는 9가지 포인트들 - 6. 운영 고려 코드 작성

    1. 기본기 확실히 하기

    ... 더 보기

     • 

    저장 246 • 조회 9,813