반응형

컨테이너 이름을 사용해서 컨테이너 연결할 수 있지만 이런 방식은 옛날 방식입니다. 물론 개발시에는 편리한 부분도 있겠지만요. 이번 글에서는 컨테이너 네트워크 또는 브리지 네트워크에 대해 알아보도록 하겠습니다.

 

이름으로 연결 하는 방식은 아래글을 참고해 주세요.

 

[Docker] 도커 컨테이너 서로 연결하기 (이름으로 연결, legacy linking)

컨테이너를 서로 연결하는데 사용할 수 있는 기술 중 하나인 레거시 연결(legacy linking)에 대해 알아보도록 하겠습니다. 두 컨테이너를 연결하는 방법은 레거시 연결 이외에 컨테이너 네트워크를

fronquarry.tistory.com


컨테이너 네트워크 이해하기

먼저 Docker 호스트를 생각해 보면, 클라우드에 있는 리눅스일 수도 있고, 로컬에서 실행은 도커일 수도 있습니다. 사실 리눅스가 깔린 곳이라면 어느 곳이라도 상관없을 것입니다. 그리고 그 도커 안에는 서로 통신해야 하는 다양한 컨테이너가 있을 것입니다.

컨테이너가 사이에 통신을 하기 위해 컨테이너의 이름을 지정하여 사용할 수 있지만, 여러 컨테이너 한 그룹에 모아 넣고 그룹을 지정하여 한 군데에 묶어 줄 수도 있습니다.

이러한 방식을 네트워크 혹은 브리지 네트워크라고 도커 문서에 정의되어 있습니다. 작동 방식은 Docker 클라이언트를 통해 격리된 네트워크를 만들고 네트워크 이름을 지정하면 됩니다. 매우 간단한 명령어로 가능하며 밑에서 잠시 후에 다루도록 하겠습니다. 격리된 네트워크에서 실행되는 모든 컨테이너는 다른 컨테이너와 통신할 수 있게 됩니다.

호스트는 네트워크를 여러 개 가질 수도 있습니다.

만약 network1이 MongoDB, Nodejs의 컨테이너였다면, network2는 ASP.NET Core 및 관련 컨테이너로 설정된 별도 유형의 격리된 네트워크를 가질 수 있게 구성이 가능합니다. 컨테이너를 자체 격리된 네트워크로 그룹화할 수 있기 때문에 관리에 매우 용이합니다.

 


컨테이너 네트워크 만들기

컨테이너 네트워크를 만드법은 매우 간단하며 Docker 클라이언트로 실행할 명령도 매우 쉽습니다.

간단히 정리하면 아래와 같습니다.

  1. 커스텀 브리지 네트워크를 생성하고 이름을 지정하기
  2. 도커를 실행하면서 컨테이너를 네트워크 안에서 실행되도록 지정하기

 

1. 커스텀 브리지 네트워크 생성하기

docker network create --driver bridge isolated_network

docker network create 명령어로 네트워크를 만들 수 있습니다. --driver로 드라이버 설정을 할 수 있는데, 다양한 드라이버가 있으며 크로스 호스트도 가능합니다. 예제에서는 bridge를 사용하고 있습니다. 그런 다음 사용자 지정 네트워크 이름을 "isolated_network"라고 정하고 있습니다. 컨테이너 이름을 지정하는 것과 마찬가지로 원하는 이름으로 만들 수 있습니다.

 

2. 컨테이너 네트워크 안에서 컨테이너 실행하기

docker run -d --net=isolated_network --name mongodb mongo

다음으로 특정 네트워크에서 해당 컨테이너를 실행하고 싶다고 도커에게 알려주는 명령을 내립니다.  --net을 사용해서 isolated_network에서 실행할 것이라고 지정합니다.

 

네트워크를 지정해서 컨테이너를 실행했지만, 동일한 네트워크에서 다른 컨테이너가 이 컨테이너를 어떻게 호출할 수 있을까요? 답은 --name에 있습니다.  --name으로 "mongodb"라는 이름을 지정한 걸 알 수 있습니다. 이렇게 하므로 isolated_network에 있는 다른 컨테이너에서 mongodb라는 서버 이름을 사용하여 MongoDB를 호출할 수 있게 됩니다.


이상으로 컨테이너 네트워크와 구성하는 방법에 대해 알아보았습니다.

다음 글에서 컨테이너 네트워크를 이용해서 Node와 MongoDB를 연결해보는 실습을 해보도록 하겠습니다.

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기