본문 바로가기

Networks

Docker0 default network IP address 변경 (docker 브릿지 기본IP 주소 변경)

도커 설치 시 기본적으로 생성되는 기본 브릿지인 docker0

이 docker0 인터페이스의 기본 network ip가 172.17.0.0/16이다

도커 서비스가 시작되는 순간 내부에서 사용하는 사설IP대역인 172.17.0.0 대역과의 통신이 끊어져 버린다... 콘솔로만 접속 가능 ㅠ

라우팅으로 처리할까 생각해보기도 했는데... 한두개 대역이 아니라 이건 노가다라 싶어

이 기본 ip를 바꾸어 보자 했다

이럴때는 구글검색 ㄱㄱ 이기 때문에 신나게 검색을 해보았고 역시나 많은 이들이 이것 때문에 고통받고 있었다...(선구자들이란 역시 힘들다 ㅋㅋ)

구글은 다음과 같이 이야기해준다

1. /etc/default/docker 에서 기본 설정을 수정하는 방법 (실패함...)

# Docker Upstart and SysVinit configuration file

#

# THIS FILE DOES NOT APPLY TO SYSTEMD

#

# Please see the documentation for "systemd drop-ins":

# https://docs.docker.com/engine/admin/systemd/

#

# Customize location of Docker binary (especially for development testing).

#DOCKERD="/usr/local/bin/dockerd"

# Use DOCKER_OPTS to modify the daemon startup options.

#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

DOCKER_OPTS="--bip 10.10.10.0/24" // 이부분을 추가해주자

# If you need Docker to use an HTTP proxy, it can also be specified here.

#export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.

#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp"

~

설정을 수정해주고

service docker start // 도커 서비스를 다시 시작!

했더니 이런... 또 ssh연결이 바로 끊어져 버렸고...

콘솔을 보니 다시 IP가 172.17.0.1로 돌아가 있다ㅋㅋㅋ 이런 #&($&!($(

2. 일단 급한데로 도커 인터페이스 IP를 변경하는 방법! (또 실패함...)

# service docker stop // 일단 도커 서비스 중지

# iptables -t nat -F POSTROUTING // 남아있는 라우팅을 지우고

# ip link set dev docker0 down // 문제의 도커 인터페이스를 중지시키고

# ip addr del 172.17.0.1/16 dev docker0 // 문제의 도커 인터페이스 IP를 삭제하고

# ip addr add 192.168.5.1/24 dev docker0 // 새로운 docker0 인터페이스의 IP를 넣고

# ip link set dev docker0 up // 도커 인터페이스 재시작!

# ip addr show docker0 // 도커 인터페이스의 IP확인! (새 아이피로 바껴있어야 정상)

# service docker start // 도커 서비스를 다시 시작!

했더니 이런... 또 ssh연결이 바로 끊어져 버렸고...

콘솔을 보니 다시 IP가 172.17.0.1로 돌아가 있다ㅋㅋㅋ 이런 #&($&!($(

3. /etc/docker/daemon.json 파일 생성 !

도커 문서에서 찾아보니

https://docs.docker.com/network/bridge/#differences-between-user-defined-bridges-and-the-default-bridge

 

Use bridge networks

In terms of networking, a bridge network is a Link Layer device which forwards traffic between network segments. A bridge can be a hardware device or a software device running...

docs.docker.com

/etc/docker/daemon.json 파일을 만들어서 설정을 넣어주면 된다라고 친절하게 설명해주고 있었고

나는 친절한 설명에 따라서 예제를 따라 IP를 넣어보았으나...

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

service docker restart 시 에러가 발생하며 도커 서비스가 안올라온다...이런 #&($&!($(

4. 해결!!

/etc/docker/daemon.json 파일 생성 시 예제와 같이 전체를 넣지 않고

vi /etc/docker/daemon.json

{

"bip": "10.10.10.1/16"  // 본인이 설정하고 싶은 IP

}

이렇게 bip 옵션 하나만 넣어주니 정상적으로 동작!

1번과 3번의 뽕짝이라고나 할까...

하 시작부터 너무 어렵다 도커 ㅋㅋㅋ