SW 개발

[docker] docker 간의 bride 를 통한 네트워크 연결 (docker-composed 사용)

. . . 2020. 9. 22. 22:39
반응형

사용시나리오

docker-composed.yml 으로 A, B 컨테이너를 만들었다.

이때, A/B 간의 통신을 하고싶을때 다음의 방법을 사용한다.

두 컨테이너간의 연결

일단, 알아둬야할점은 다음과같다.

  1. docker를 만들면 각각의 docker 에 network bridge 가 기본으로 만들어진다.
  2. 각각의 bridge 는 각기 다른 네트워크 대역으로 통신이 불가능하다. (단, 외부 포트를 빼서 해당 포트로 통신하는것은 가능하겠지..)

그럼 각 docker 를 만들때마다 생성되는 bridge 를 기존에 생성되어있던 브릿지를 사용하면, 두 도커간의 통신이 쉽게 가능하다.

  • 각 컨테이너간의 통신을 괜히 외부 port 를 열어서 보안에 취약하게 하지 말자~!

docker-composed.yml 예제로 살펴보자.

A docker (host bridge 생성)

version: '3'
services:
  a-container-d:
    image: a-container-d
    container_name: a-container-d
    restart: on-failure

networks:
    default:
        name: a-container-d-net
        driver: bridge
  • 기본 네트워크를 a-container-d-net 이란 이름으로 생성한다.
    • 추후에 해당 이름으로 네트워크에 join 시킨다.

B docker (host bridge 연결)

version: '3'
services:
  b-container-d:
    image: b-container-d
    container_name: b-container-d
  restart: on-failure

# for join network
networks:
   default:
       external:
         name: a-container-d-net
  • 기본적으로 생성되는 네트워크를 사용하지 않고, 외부에 있는 a-container-d-net 를 사용하도록 설정하였다.

컨테이너 연결후의 통신

두개의 컨테이너가 연결된 이후에는 container_name 이름으로 통신이 가능하다.

즉, b-container-d , a-container-d 으로 각각 핑을 쏘면 서로 통신이 가능하다.

간단하게 활용가능.

굿~

반응형