본문 바로가기

Server/Docker

[Docker]정적 IP Container 설정하기

프로젝트를 진행하다 보면 여러 개의 Container 올리고 난 후 이들 간, Container IP를 통해 연결하고 통신을 해야 하는 경우가 있습니다. 하지만, Container 특성 상 재기동 하게 되면 Container에 부여된 IP가 계속 변동되기 때문에 하드 코딩으로 IP를 지정하기 어렵습니다.

따라서, Container의 IP가 변동되지 않도록 컨테이너의 정적 IP를 설정 해주어야 합니다.


고정 IP 지정법

1. Gateway와 Subnet을 지정

docker network create --gateway 172.19.0.1 --subnet 172.19.0.0/21 tcnet

 

2. 자동 지정

docker network create --driver bridge tcnet

생성한 Network 확인하기

docker inspect {생성한 Network 이름}
# docker inspect tcnet

 


Network를 지정하여 Container 생성하기

Network를 성공적으로 만들었으니 몇 가지 추가 옵션을 부여하여 Container를 생성해 보겠습니다.

docker run --restart="always" 
           -itd 
           --net tcnet 
           --ip 172.18.0.2 -p 6379:6379 
           -v /var/www/html/test:/var/www/html 
           --name redis-container redis

위 명령어를 통해서 Container를 생성할 때 내 Network의 원하는 IP로 설정할 수 있습니다. (단, 생성한 Network의 Gateway IP를 기반으로 설정해야 합니다. ex. Gateway: 172.18.0.1 → 172.18.0.2, 172.18.0.3, 172.18.0.4, ... )

  • --restart="always": Docker가 재시작 될 때 마다 해당 Container도 자동으로 재시작됩니다.
  • -itd: Container를 대화식 모드와 백그라운드 모드로 실행합니다.
  • --net tcnet --ip 172.18.0.2: 해당 Container는 tcnect 이라는 Network에 연결되고, IP는 172.18.0.2로 설정됩니다.
  • -p 6379:6379: Local의 6379 포트를 Container의 6379 포트와 매핑합니다. 이를 통해 Local을 통해 Container의 해당 포트로 접근할 수 있습니다.
  • -v /var/www/html/test:/var/www/html: Local의 /var/www/html/test 디렉토리를 Container의 /var/www/html 디렉토리와 마운트 합니다. 이렇게하면 이 디렉토리의 내용을 Container에서 직접 액세스 할 수 있습니다.
  • --name redis-container redis: Container의 이름을 redis-container로 지정하고 컨테이너에서 실행 할 이미지(redis)를 지정합니다.

Container 생성 후 Network 확인

Network에 연결된 Container들의 정보