본문 바로가기
Application/Docker

docker & docker-compose network

by eeeun:) 2022. 3. 29.
반응형

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/

 

Networking in Compose

 

docs.docker.com

https://www.daleseo.com/docker-compose-networks/

 

Docker Compose 네트워크

Engineering Blog by Dale Seo

www.daleseo.com

https://nirsa.tistory.com/80

 

[Docker CE] docker-compose 문법 간단 정리 (2) (ports, expose, depends_on, nevironment, env_file, container_name, labels, v

1편 (image, build, command, entrypoint, links) : https://nirsa.tistory.com/79?category=868315 5. ports ports는 호스트OS와 컨테이너의 포트를 바인딩 시켜줍니다. 참고로 아래 docker-compose.yml을 작성할..

nirsa.tistory.com

 

728x90

'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

댓글