Docker 배포 시 고정 IP 할당

박우진·2025년 3월 28일

Network/Server

목록 보기
11/12

서버 내에서 실행된 도커에 Github Action으로 자동화 배포 시켜놨더니 Docker 내부의 네트워크가 지속적으로 변하는 오류가 생겼습니다. 이를 해결하기 위해 배포 시 고정 IP를 할당하는 방법으로 해결하였습니다.

Docker에서 고정 IP 설정하는 방법

Docker에서 컨테이너를 고정 IP로 실행하려면 사용자 정의 네트워크를 생성하고 해당 네트워크에서 고정 IP를 할당해야 합니다. 기본 bridge 네트워크는 고정 IP를 지원하지 않기 때문에, 사용자 정의 네트워크를 만들어야 합니다.

1️⃣ 사용자 정의 네트워크 생성

먼저, 고정 IP를 사용할 네트워크를 --subnet 옵션을 사용해 서브넷을 지정하여 생성합니다. 이때, --attachabletrue로 설정해야 컨테이너를 네트워크에 추가할 수 있습니다.

docker network create --driver bridge --subnet 172.18.0.0/16 --attachable myblog-network
  • --subnet: 네트워크의 서브넷을 지정합니다. 여기서는 172.18.0.0/16을 예시로 사용했습니다.
  • --attachable: 컨테이너를 네트워크에 추가할 수 있도록 설정합니다. 이 옵션을 설정하지 않으면, 네트워크에 컨테이너를 추가할 수 없습니다.

2️⃣ 고정 IP로 컨테이너 실행

네트워크가 생성된 후, docker run 명령어로 컨테이너를 실행할 때, --network--ip 옵션을 사용하여 고정 IP를 설정할 수 있습니다.

docker run --name myblog-api-instance \
  --network myblog-network \
  --ip 172.18.0.4 \
  -p 8090:8090 \
  -e SPRING_PROFILES_ACTIVE=prod \
  -d ${{ secrets.DOCKER_USERNAME }}/my-blog-api:${{ env.VERSION }}
  • --network myblog-network: 고정 IP를 할당할 사용자 정의 네트워크를 지정합니다.
  • --ip 172.18.0.4: 고정 IP 주소를 설정합니다. 이 IP는 서브넷 내에서 유효한 주소여야 합니다.

3️⃣ 기존 컨테이너를 새로운 네트워크에 연결 (선택 사항)

이미 실행 중인 컨테이너가 있다면, 새로운 네트워크에 docker network connect 명령어로 연결할 수 있습니다.

docker network connect myblog-network myblog-api-instance

4️⃣ 기존 네트워크에서 분리 (선택 사항)

기존 네트워크에서 컨테이너를 분리하려면 docker network disconnect 명령어를 사용합니다.

docker network disconnect old-network myblog-api-instance

결론

  • 고정 IP를 사용하려면 사용자 정의 네트워크를 생성하고, --subnet--attachable을 설정해야 합니다.
  • 컨테이너를 실행할 때 --ip 옵션을 사용하여 고정 IP를 설정할 수 있습니다.
  • 이미 실행 중인 컨테이너는 docker network connect 명령어로 새로운 네트워크에 연결할 수 있습니다.

이 설정을 통해 Docker에서 고정 IP를 할당하여 여러 컨테이너 간의 네트워크를 안정적으로 관리할 수 있습니다.

0개의 댓글