- 삽질했던 기록들을 정리한다.
- 도커를 가볍게 사용하려는 사람에게만 해당한다. (본인은 초보 ㅠㅠ)
각 다른 container 간의 연결에 대해서..
일단 가정을 이렇게 하자.
- 가정상황상황
- 각각 다른 컨테이너를 만들었다. (composed 혹은 run 등으로 만들었다고 치자.)
- 각각 다른 컨테이너끼리 연결하여 통신하고싶다.
위의 상황일경우 어떻게 할까? 구글링을 해보면 알겠지만 생각보다 간단하지가 않다.
docker composed 를 이용할때
links
옵션의경우 같은공간의 컨테이너일때만 가능하다. 즉, 완전 별개로 생성된 두개의 컨테이너는 단순히links
옵션 만으로는 네트워크 연결이 불가능하다.
복잡한? 방법
대략적인 구글링의 결과를 보면.. 개복잡하다.
일반적인 방법은 다음과 같다.
- docker bridge network 생성
- 해당 네트워크를 각각의 컨테이너실행시 옵션을 줘서 실행
참고로,
external_links
는 동작을 하지 않는다. 단순히 composed 에external_links
옵션을 줘서 타겟 컨테이너를 명시했다고 해도 동작이 안된다. 각 컨테이너간 브릿지 네트워크 구성이 안되어있는 상태에서는 동작이 안된다.
위의 방법의 경우 나같은 초보에게는 좀 힘들다. 이미 만들어 져서 잘 동작하고있는 도커를 또 옵션을 변경하고 뭐하고가 너무 무섭다. 또한, 현재까지 잘 사용하던 컨테이너를 삭제하고 옵션을 줘서 다시 생성하기가 싫었다.
간단방법 발견
일단 두개의 컨테이너간의 네트워크 연결은 network bridge
를 사용해도 되지만... 이미 만들어져서 동작하고있는상황이라면 docker network join
방법을 사용하자.
위의 내용을 보면... 괜히 복잡해보인다.
ui 를 통한 두 컨테이너간의 네트워크 연결
우선 구글링을 통해서 Portainer
설치하자. (설명한 블로그나 문서가 워낙 많다. 편한걸로 설치하자)
이런 저런 도커 관리 툴들을 설치해봤는데.. 그중
Portainer
가 설치나 설정이 쉽고, 가장 직관적이었다.
메인화면에서 네트워크를 들어가보자
현재 생성되어있는 네트워크 리스트들이 나온다.
각각의 네트크들을 들어가서 어떤 컨테이너가 사용중인지 확인하자. (연결하고자하는 네트워크 이름을 기억하자)
그후에 연결하고자하는 도커의 설정을 들어가면..
상세화면에서 하단에 네트워크 연결상태가 보인다.
위에서 확인한 연결하고자하는 네트워크를 선택하여 join network
버튼을 누르면 끝
끗
정상적으로 연결이 되었다면, 이제부터 컨테이너 안에서 ping 을 통해서 다른 컨테이너로 통신이 되는것을 확인한다. 컨테이너 주소는 컨테이너 이름으로 바로 접근이 가능하다.
...
ui 로 쓰는게 하수같지만 일단급하니 바로바로 설정하여 사용 ㄷㄷ