Woopii Vyeolog

[Docker] 컨테이너끼리 통신 본문

Docker

[Docker] 컨테이너끼리 통신

WooPii 2022. 9. 1. 01:57

[참고] 

https://blackpost38.github.io/2018/01/13/networking-docker-container/

 

도커 컨테이너 끼리 통신 · Dev Blog

12345678> docker run –link container2:container2 -itd –name=container1 busybox> docker attach container1> ping container2PING container2 (172.21.0.3): 56 data bytes64 bytes from 172.21.0.3: seq=0 ttl=64 time=0.268 ms64 bytes from 172.21.0.3: seq=1 ttl=

blackpost38.github.io

[참고]

https://woopi1087.tistory.com/87

 

[Docker] Spring Boot 어플리케이션 이미지 생성

[참고] spring Boot application을 Docker 이미지로 생성 https://spring.io/guides/gs/spring-boot-docker/ Spring Boot with Docker this guide is designed to get you productive as quickly as possible and..

woopi1087.tistory.com


컨테이너 형태로 올라가 있는, Eureka-Discovery-Server에 Application(Api-Gateway)을 등록하려고 한다 

등록을 하려면, Application(Api-Gateway)에 Eureka-Server의 Default-Url을 설정해야 한다.

문제는, Eureka-Server의 IP는 고정이 아니라 컨테이너를 띄울 떄 마다 변동 될 수 있다는 것이다.

 

이를 해결하기 위해, 특정 컨테이너들을 서로 연결 할 수 있게 Docker 브릿지를 하나 새로 만들고, 

그 브릿지에 컨테이너들을 연결 될 수 있도록 한다.

컨테이너 연결 시, 컨테이너 이름으로 DNS가 설정되기 때문에 IP가 변동되는 상황을 신경쓰지 않아도 된다.


1. 서로 다른 컨테이너에 통신을 수행할 Application 준비

1. Eureka-Discovery-Server

2. Api-Gateway

Api-Gateway의 설정에 Eureka-Discovery-Server를 등록하면, Api-Gateway기동 시 Eureka-Discovery-Server에 통신 요청을 보내어 등록하게 된다.

 

Api-Gateway Application의 application.yml

server:
    port: 9000

spring:
    application:
        name: api-gateway
    # devtools:
    #     livereload:
    #         enabled: true
    #     restart:
    #         enabled: true  
    security: 
        user:   # application 에서는 user를 한명만 추가 가능하다
            name: user
            password: user
            roles: USER

eureka:
    client:
        register-with-eureka: true
        fetch-registry: true
        service-url:
            # eureka-discovery-server은 브릿지에 연결된 컨테이너 이름
            defaultZone: http://eureka-discovery-server:8761/eureka

 

2. Docker 이미지 빌드

이미지 빌드 시 주의할 점은 명령어는 Dockerfile이 있는 디렉토리에서 해야한다.

[참고] https://woopi1087.tistory.com/87

 

docker build -t eureka-discovery-server:1.0 -f dockerfile-eureka-discovery-server .

docker build -t api-gateway:1.0 -f dockerfile-api-gateway .

 

3. 브릿지 생성

docker network create --driver bridge my-bridge

 

 

4. 컨테이너 생성 및 브릿지에 연결

컨테이너 생성 시 새로만든 브릿지에 연결한다.

docker run -d -p 8761:8761 --name eureka-discovery-server --network my-bridge eureka-discovery-server:1.0

docker run -d -p 9000:9000 --name api-gateway --network my-bridge api-gateway:1.0

 

5. 기동중인 컨테이너를 브릿지에 등록

만약 이미 컨테이너가 기동중이라면, 아래 명령어로 새로운 브릿지에 등록할 수 있다.

docker network connect mybridge eureka-discovery-server

docker network connect mybridge api-gateway

 

 

6. 연결 확인

호스트 OS에서 브라우저를 띄워 VM에서 띄우고 있는 Eureka-Discovery-Server로 접속 해본다

Api-Gateway Application이 Eureka-Discovery-Server와 통신하여 등록된 것을 확인 할 수 있다.

Comments