[Linux] Docker에 고정 IP 설정하기
A. 사용환경
- OS : Rocky Linux 9.5 (Blue Onyx)
- Docker : 28.0.4
- Portainer : 2.27.3 LTS
B. 왜 고정 IP로...?
현재 구축 중인 Docker서버는 단일 호스트에 여러 개의 오픈소스 소프트웨어들을 운영하는 것이 1단계 목표이다.(나중엔 쿠버네티스 같은 환경으로...)
각 소프트웨어들에 접속할 때 http://hostip:port
와 같은 형태로 사용해도 되지만... 테스트도 아니고 어쨌든 운영용도로 사용할 계획이니 http(s):domain/
과 같이 깔끔한 형태로 접속하게 하고 싶었다.
그렇게 구성하기 위해서 Nginx Proxy Manager를 이용해보려고 한다.(도메인 처리 및 ACL 등 여러 목적으로..?)
문제는 예전 경험인데... 고정 IP로 셋팅을 안해두면 docker 업데이트되면서 IP가 변경되는 이슈가 있다.
그래서 Bridge 네트워크를 하나 만들고 그 Bridge 네트워크에 각 컨테이너들을 실행시킬 때 IP를 직접 부여한느 방식으로 진행하려고 한다.
C. Bridge 네트워크 추가
지난 번에 Portainer를 설치했으니 Portainer를 이용해보자.

- Name : DevteamNet (이름은 원하는 걸로...)
- Driver : bridge (기본값이니 변경X)
- Subnet : 172.20.0.0/24 (이렇게 설정하면 172.20.0.1 ~ 172.20.0.255까지 사용이 가능하다)
- 나머지는 변경하지 않고 Create the network 클릭
생성한 네트워크를 명령어로 확인해보면...
$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
eecf5333f9db DevteamNet bridge local
c0f6e27667b7 bridge bridge local
6d2dc151721a host host local
98e9babf892d none null local
$
생성한 DevteamNet
이라는 네트워크가 생긴 것을 확인할 수 있다.
D. 컨테이너 재실행
아마 네트워크를 지정하지 않았다면, Docker 설치 시에 생성된 bridge
네트워크에서 동작 중이었을 것이다.
기본으로 생성되는 bridge 네트워크는 DHCP를 사용하므로 해당 네트워크가 아닌 위에서 추가한 네트워크에 올리려고 한다.
작업할 대상은... 기존에 설치했던 Portainer 컨테이너부터!
$ sudo docker stop portainer
$ sudo docker rm portainer
$ sudo docker run -d -p 9000:9000 --name=portainer --network DevteamNet --ip 172.20.0.10 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.27.3
처음에 설치할 때와 거의 유사하지만...
- --network DevteamNet : 네트워크명 지정
- --ip 172.20.0.10 : IP 지정
위의 두 옵션을 추가해서 docker run을 이용해서 컨테이너를 배포하면 아주 쉽게 이관완료!
E. 확인
docker inspect
명령어를 이용해서 확인해도 되지만... Portainer를 사용하니까

Networks에서 DevteamNet을 선택해서 확인해보면 해당 네트워크에서 실행 중인 컨테이너의 목록을 확인할 수 있다. IP주소가 뭐인지도.
F. 마치면서
Portainer를 이용하면 다른 컨테이너를 GUI를 이용해서 쉽게 배포할 수 있다. 문제는 Portainer 자체는 스스로를 컨트롤 할 수 없으니까...
$ sudo docker run -d -p 9000:9000 --name=portainer --network DevteamNet --ip 172.20.0.10 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.27.3
이런 Portainer 배포를 위한 명령어 정도는 잘 메모해두자.. (나중에 헷갈려요...)