반응형
사용시나리오
docker-composed.yml 으로 A, B 컨테이너를 만들었다.
이때, A/B 간의 통신을 하고싶을때 다음의 방법을 사용한다.
두 컨테이너간의 연결
일단, 알아둬야할점은 다음과같다.
- docker를 만들면 각각의 docker 에 network bridge 가 기본으로 만들어진다.
- 각각의 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
으로 각각 핑을 쏘면 서로 통신이 가능하다.
간단하게 활용가능.
굿~
반응형