[Linux] Docker에 고정 IP 설정하기

[Linux] Docker에 고정 IP 설정하기
Photo by Mohammad Rahmani / Unsplash

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 배포를 위한 명령어 정도는 잘 메모해두자.. (나중에 헷갈려요...)

Read more

[Oracle] DB계정 생성 시 참고사항

[Oracle] DB계정 생성 시 참고사항

사용환경 * Oracle DBMS : 19c (19.3) A. 시작하기 전에.. 최근에 몇 개의 DB서버를 셋팅하면서 DB계정을 생성할 일이 많이 있었는데 루틴하게 수행하던 쿼리에 약간 의문이 생겨서 몇 가지 테스트를 해봤다. 그 내용을 잘 기억하기 위해서 정리해서 적어본다.(누군가한테 도움이 될 수도 있지만 실제론... 이렇게 블로그 포스트로 만들다보면 결국 내 기억에 각인이

By simplism
[Linux] Mariadb Docker container 설치

[Linux] Mariadb Docker container 설치

A. 사용환경 * OS : Rocky Linux 9.5 (Blue Onyx) * Docker : 28.0.4 * Portainer : 2.27.3 LTS B. 시작하기 전에... 어떤 소프트웨어를 사용하더라도 보통 Database는 거의 필수로 필요한 편이다.(요즘엔 SQLite도 많이써서... DB서버가 없어도 되긴하지만 어쨌든!) 업무적으로 사용할 소프트웨어들을 몇개 검토해봤는데, 대부분이 MySQL, Mariadb, PostgreSQL이더라. 일단, 바로 설치해서 사용해볼

By simplism
[Linux] Docker에 Portainer 설치

[Linux] Docker에 Portainer 설치

A. 사용환경 * OS : Rocky Linux 9.5 (Blue Onyx) * Docker : 28.0.4 B. Portainer란? docker를 사용할 때 명령어 기반으로 사용해도 되지만... 여전히 GUI는 필요하다.(ㅎㅎ) Portainer를 간단하게 설명하면 docker 관리소프트웨어(웹기반)정도로 이해해도 된다. Portainer 공식 홈페이지에서 확인해보면 기능이 아주 많은 것 같은데... 사실 나의 경우에는 아주 단순한 기능만

By simplism
[Linux] Rocky Linux 9에 Docker 설치

[Linux] Rocky Linux 9에 Docker 설치

사용환경 1. Hardware : VMware 2. OS : Rocky Linux 9.5 (Blue Onyx) A. 시작하기 전에.. Docker 테스트를 위해서 VMware에 가상서버를 생성하고 Rocky Linux를 설치했다. 개인적으로는 Ubuntu를 선호하는 편인데, 회사에서 사용할 서버라서 다른 사람들과 같이 사용하기 위해서 RHEL이나 RHEL과 호환되는 배포판을 선택해서 사용하는 편이다. B. Docker 설치 전 작업 01. OS

By simplism