SW 개발

다른 공간의 docker 끼리의 통신연결에 대해서..

. . . 2019. 10. 18. 19:07
반응형
  • 삽질했던 기록들을 정리한다.
  • 도커를 가볍게 사용하려는 사람에게만 해당한다. (본인은 초보 ㅠㅠ)

각 다른 container 간의 연결에 대해서..

일단 가정을 이렇게 하자.

  • 가정상황상황
    • 각각 다른 컨테이너를 만들었다. (composed 혹은 run 등으로 만들었다고 치자.)
    • 각각 다른 컨테이너끼리 연결하여 통신하고싶다.

위의 상황일경우 어떻게 할까? 구글링을 해보면 알겠지만 생각보다 간단하지가 않다.

docker composed 를 이용할때 links 옵션의경우 같은공간의 컨테이너일때만 가능하다. 즉, 완전 별개로 생성된 두개의 컨테이너는 단순히 links 옵션 만으로는 네트워크 연결이 불가능하다.

복잡한? 방법

대략적인 구글링의 결과를 보면.. 개복잡하다.

일반적인 방법은 다음과 같다.

  1. docker bridge network 생성
  2. 해당 네트워크를 각각의 컨테이너실행시 옵션을 줘서 실행

참고로, external_links 는 동작을 하지 않는다. 단순히 composed 에 external_links 옵션을 줘서 타겟 컨테이너를 명시했다고 해도 동작이 안된다. 각 컨테이너간 브릿지 네트워크 구성이 안되어있는 상태에서는 동작이 안된다.

위의 방법의 경우 나같은 초보에게는 좀 힘들다. 이미 만들어 져서 잘 동작하고있는 도커를 또 옵션을 변경하고 뭐하고가 너무 무섭다. 또한, 현재까지 잘 사용하던 컨테이너를 삭제하고 옵션을 줘서 다시 생성하기가 싫었다.

간단방법 발견

일단 두개의 컨테이너간의 네트워크 연결은 network bridge 를 사용해도 되지만... 이미 만들어져서 동작하고있는상황이라면 docker network join 방법을 사용하자.

위의 내용을 보면... 괜히 복잡해보인다.

ui 를 통한 두 컨테이너간의 네트워크 연결

우선 구글링을 통해서 Portainer 설치하자. (설명한 블로그나 문서가 워낙 많다. 편한걸로 설치하자)

이런 저런 도커 관리 툴들을 설치해봤는데.. 그중 Portainer 가 설치나 설정이 쉽고, 가장 직관적이었다.

메인화면에서 네트워크를 들어가보자

메인화면에서 네트워크 설정을 클릭하여 들어가자

현재 생성되어있는 네트워크 리스트들이 나온다.

현재 생성되어있는 도커 네트워크 인터페이스들

각각의 네트크들을 들어가서 어떤 컨테이너가 사용중인지 확인하자. (연결하고자하는 네트워크 이름을 기억하자)

연결되어있는 컨테이너 확인

그후에 연결하고자하는 도커의 설정을 들어가면..

현재 생성된 컨테이너의 리스트들

상세화면에서 하단에 네트워크 연결상태가 보인다.

네트워크 연결상태

위에서 확인한 연결하고자하는 네트워크를 선택하여 join network 버튼을 누르면 끝

join network!

정상적으로 연결이 되었다면, 이제부터 컨테이너 안에서 ping 을 통해서 다른 컨테이너로 통신이 되는것을 확인한다. 컨테이너 주소는 컨테이너 이름으로 바로 접근이 가능하다.

...

ui 로 쓰는게 하수같지만 일단급하니 바로바로 설정하여 사용 ㄷㄷ

반응형