DockerCompose 네트워크
디폴트 네트워크
기본적으로 Docker Compose는 하나의 디폴트 네트워크에 모든 컨테이너를 연결한다. 디폴트 네트워크의 이름은 docker-compose.yml가 위치한 디렉토리 이름 뒤에 _default가 붙는다.
common/docker-compose.yml 에서 docker-compose up 을 실행하였다면, 디폴트 네트워크의 이름은 common_default 이다.
sunghyunui-MacBook-Pro:common sunghyun$ docker network ls
NETWORK ID NAME DRIVER SCOPE
7d10570b388c 03container_exam_default bridge local
5cdd4f6a9893 bridge bridge local
feb5a1d4afd8 common_default bridge local
53f497befbc0 docker_default bridge local
baf4baf5b236 host host local
4582ef63e350 jenkins_default bridge local
e2563aa1182e none null local
cdd5bc27e497 wp_default bridge local
docker compose로 실행된 컨테이너는 디폴트 같은 네트워크에 위치한다고 보면 된다. 만약에 docker compose를 사용하지 않고 단일 컨테이너들을 같은 네트워크로 묶고싶다면 네트워크를 생성해서 설정해주는 작업이 필요하다. (이 부분은 공부 후에 다시 포스팅)
컨테이너 간 통신
디폴트 네트워크 안에서 컨테이너간 통신은 서비스 이름이 호스트명으로 사용된다.
version: "3.8"
services:
front:
image: corn_front
ports:
- "9090:80"
depends_on:
- back
back:
image: corn_back
ports:
- "8080:8080"
이런 상황이라면 front, back 이 각각 호스트명이 되겠다.
sunghyunui-MacBook-Pro:common sunghyun$ docker-compose exec back ping front
PING front (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.427 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.138 ms
64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.137 ms
64 bytes from 172.18.0.3: seq=3 ttl=64 time=0.163 ms
64 bytes from 172.18.0.3: seq=4 ttl=64 time=0.199 ms
64 bytes from 172.18.0.3: seq=5 ttl=64 time=0.131 ms
64 bytes from 172.18.0.3: seq=6 ttl=64 time=0.137 ms
64 bytes from 172.18.0.3: seq=7 ttl=64 time=0.139 ms
ping을 통해 통신이 잘되는 것을 확인하였다. front, back 에서 ip를 확인해보니 각각 172.18.0.3 , 172.18.0.2 .. 이런식으로 할당된 것을 확인하였다.
주의할 점은 접속하는 클라이언트위치가 디폴트 네트워크내부인지 외부인지에 따라서 포트가 달라 질 수 있다는 것이다.
만약 호스트 컴퓨터(디폴트 네트워크 외부)에서 front 서비스에 접속을 하기 위해서는 9090포트로 해야하지만, back 서비스(디폴트 네트워크 내부)에서 front 서비스에 접속하기 위해선 80포트로 해야한다.
커스텀 네트워크 추가
DockerCompose 설정파일 안에서 디폴트 네트워크 뿐만 아니라 다른 네트워크도 추가가 가능하다.
networks 항목에 corn_net 를 추가해보자.
version: "3.8"
services:
front:
image: corn_front
ports:
- "9090:80"
networks:
- default
- corn_net
back:
image: corn_back
ports:
- "8080:8080"
networks:
- default
- corn_net
networks:
corn_net:
driver: bridge
새로운 네트워크가 생성된 것을 볼 수 있다.
sunghyunui-MacBook-Pro:common sunghyun$ docker-compose up
Creating network "common_corn_net" with driver "bridge"
Recreating common_front_1 ... done
Recreating common_back_1 ... done
sunghyunui-MacBook-Pro:common sunghyun$ docker network ls
NETWORK ID NAME DRIVER SCOPE
7d10570b388c 03container_exam_default bridge local
5cdd4f6a9893 bridge bridge local
7eb9300b74ee common_corn_net bridge local
feb5a1d4afd8 common_default bridge local
53f497befbc0 docker_default bridge local
'프로그래밍 노트 > 도커' 카테고리의 다른 글
스웜(swarm)을 이용한 도커 컨테이너 배포_1 (0) | 2021.02.05 |
---|---|
실용적인 (도커)컨테이너 구축 및 배포를 위한 지식_1 (0) | 2021.01.30 |
도커살펴보기_도커 컨테이너 다루기 (0) | 2021.01.17 |
도커살펴보기_이미지 다루기 (0) | 2021.01.15 |
도커살펴보기_컨테이너로 애플리케이션 실행하기 (0) | 2021.01.15 |