개발/Server

docker 컨테이너 ip 고정

leebera_ 2022. 5. 8. 03:16

docker는 컨테이너들간, 외부 host와의 통신 위해 가상 linux bridge를 이용한다.

컨테이너 생성 시 네트워크를 지정하지 않으면 docker network ls 명령에서 나오는 것 중 bridge를 기본 네트워크로 사용한다.

기본 네트워크는 docker의 호스트 컴퓨터를 재시작하면 컨테이너에 할당했던 ip가 초기화되어 재할당시키므로 웹 서버나 db서버의 ip가 달라져 통신에 문제가 생길 수 있다.

이를 해결하기 위해 새로운 bridge를 만들고 컨테이너들을 기본 bridge가 아닌 새로 만든 bridge에 할당시킨다.

docker network create --gateway 172.20.0.1 --subnet 172.20.0.0/16 myBridge

 

이후에 docker run 할 때 --network myBridge 옵션과 --ip 172.20.0.2 옵션을 추가하면 된다.

ip 옵션의 ip는 컨테이너마다 겹치지 않게 변경해줘야 한다. (172.20.0.2를 이미 한 컨테이너에서 적용했다면 다른 컨테이너엔 172.20.0.3을 적용해야 하는 것이다.)

 


 

참고

 

Assign static IP to Docker container

I'm now trying to assign a static IP 172.17.0.1 when a Docker container be started up. I use port 2122 as the ssh port of this container so that I let this container listen port 2122. sudo docke...

stackoverflow.com