docker network
docker network는 목적에 맞는 여러 가지 네트워크 드라이버를 제공한다.
그중 가장 유명한 bridge, host, overlay가 무엇인지 보자.
1. bridge : 하나의 호스트 컴퓨터에서 여러 개의 컨테이너들이 통신할 수 있게 한다.
2. host : 호스트 컴퓨터와 동일한 네트워크에서 여러 개의 컨테이너들이 통신할 수 있게 한다.
3. overlay : 여러 호스트 컴퓨터(다른 네트워크)에서 여러 개의 컨테이너들이 통신할 수 있게 한다.
docker network를 확인할 수 있다.
daemon이 실행되면서 bridge, host, none이 default로 생성된다.
docker network ls
// 자세한 네트워크 정보보기
docker network inspect
네트워크를 새로 생성할 수 있다.
또한 container에게 네트워크를 할당할 수도 있다.
다른 네트워크에 연결한다고 기존 네트워크와의 연결을 끊는 것은 아니다.
// 네트워크 생성하기
docker network create 네트워크명
// 컨테이너에 네트워크 연결하기
docker network connect 네트워크명 컨테이너명
// 네트워크 끊기
docker network disconnect 네트워크명 컨테이너명
컨테이너끼리 같은 네트워크에 연결이 잘 되었는지 확인하기 위해 컨테이너 1에서 컨테이너 2로 ping를 날려봤다.
docker exec 명령어는 실행 중인 컨테이너에게 접속해서 명령어를 실행시킬 수 있게 해 준다.
docker exec 컨테이너1 ping 컨테이너2
docker-compose network
docker-compose network의 driver도 docker network와 동일하다.
docker-compose에 있는 컨테이너들은 기본적으로 ". yml파일이 있는 디렉토리명_default"로 동일한 네트워크를 가지게 된다.
compose는 우선적으로 네트워크를 먼저 생성하고 container를 구동시킨 후 네트워크에 연결해준다.
docker-compose down를 할 때에도 마찬가지로 종료, 제거한 후 네트워크를 제거한다.
밑의 예시 코드를 보자.
container1:
networks:
- test_network
ports:
- 4444:5555
links:
- db:databases
db:
networks:
-test_network
expose:
-6666
networks:
test_network:
driver: bridge
container 간의 네트워크에서 service명이 host명으로 사용된다.
container1의 host명은 container1이다.
links를 통해 다른 서비스에서 해당 서비스에 접근할 수 있는 host 이름을 바꿀 수 있다.
container1은 db와 databases 둘 다 db 서비스로 받아들인다.
networks를 통해 네트워크 이름을 변경할 수 있다.
ports를 통해 포트를 지정할 수 있다. 호스트 컴퓨터에서 접근을 할 때에는 4444로 접근해야 되고, 같은 네트워크의 컨테이너에서 접근할 때는 5555 포트를 사용하면 된다.
호스트 컴퓨터와 연결이 필요 없을 경우 export를 통해 같은 네트워크 상에서의 포트만 지정해줄 수 있다.
References
https://docs.docker.com/compose/networking/
https://www.daleseo.com/docker-compose-networks/
'Application > Docker' 카테고리의 다른 글
mariaDB-server dockerfile 만들기 (0) | 2022.03.29 |
---|---|
Docker에 ngnix 설치하기 (0) | 2022.03.24 |
Docker 명령어 정리 (0) | 2022.03.24 |
Debian에 docker-compose 설치하기 (0) | 2022.03.24 |
Ubuntu에 docker 설치하기 (0) | 2022.03.24 |
댓글