728x90
반응형
도커 네트워크
- 도커 네트워크는 일종의 내부망 이다.
- 각 컨테이너들은 독립적인 네트워크 망을 가진다.
- 정확히는 분리된 네트워크를 가진다 -> IP를 나눈다는 의미
- 때문에 각 컨테이너별로 호스트와는 다른 가상의 IP 주소를 가진다.
- 도커 네트워크는 컨테이너가 끼리의 통신을 할 수 있는 범위라 말할 수 있을 것 같다.
- 기본적으로 컨테이너가 구동되게 되면 해당 컨테이너에 대한 default_network가 생성된다.
- 이렇게 되면 다른 네트워크의 컨테이너와 소통할 수 없기 때문에 도커 외부로 우회하여 소통해야한다.
- 컨테이너끼리 소통하기 위해 외부로 나갔다 들어와야 하기 때문에 성능적으로 저하가 발생하고, 보안적으로도 문제가 생길 수 있다.
- 그러나 동일한 네트워크에 속한 컨테이너들 끼리는, 컨테이너의 이름과 포트만으로 서로 통신이 가능하다.
컨테이너 구동 시 도커 네트워크 구성에 대해
- 컨테이너 구동 시, 순차적으로 도커 내부 IP 부여
- 일반적으로 172.~~ 으로 시작하더라
- 순차적으로 IP를 부여하기 때문에, 컨테이너를 내렸다 다시 올리면 컨테이너 IP가 변동 될 수 있음
- 도커 네트워크는 내부망이기에, 외부와 연결시켜야 함
- 컨테이너 구동 시, 자동적으로 컨테이너 마다 호스트에 veth(Virtual Ethernet)라는 가상 네트워크 인터페이스를 생성함
- 네트워크 관련 설정을 하지 않는다면 default0 브릿지를 사용함
Docker Bridge
- 도커 브릿지는 호스트와 컨테이너를 잇는 라우팅 경로
- 즉 쉽게 말하면, 각 컨테이너에 가상의 IP를 부여하는 공유기 역할
도커 네트워크 전체 조회
- 현재 사용중인 도커 네트워크 리스트 조회
docker network ls
- 도커 네트워크 세부사항 조회
docker network inspect
도커 네트워크 설정
- 도커 네트워크 설정
docker network create <네트워크 이름>
컨테이너 네트워크 설정
- 같은 도커 네트워크에 해당하는 모든 컨테이너들은 서로 내부 통신이 가능함
- 이미 db_mariadb 라는 컨테이너가 proxy라는 도커 네트워크 안에 구동되어 있다면
- 지금 올리는 어플리케이션 컨테이너를 proxy라는 네트워크에 포함시킴으로 인해서, db_mariadb:3306 을 url로 잡으면 통신이 가능해짐
- 같은 네트워크가 아니라면, 'HostIP:컨테이너 포트' 를 통해 접근할 수 있음
- 문제는 컨테이너가 호스트에 포트를 열어둔게 아닌, 컨테이너 포트만 노출 시킨 상태라면 접근할 수 있는 방법이 없어짐
- 컨테이너 네트워크 설정 - docker compose
- external: 컨테이너 구동 시 새로운 네트워크를 사용할지에 대한 여부를 설정하는 것
- true: 기존 도커 네트워크를 할당함
- false: 새로운 도커 네트워크를 생성함
services: app: // 컨테이너 설정 networks: - proxy networks: proxy: # proxy라는 새로운 네트워크를 생성하는게 아닌, 기존의 proxy라는 네트워크를 사용한다는 의미 external: true
- external: 컨테이너 구동 시 새로운 네트워크를 사용할지에 대한 여부를 설정하는 것
- 컨테이너 네트워크 설정 - Dockerfile
docker run app_name --net proxy
728x90
반응형
'데브옵스 devOps > Docker' 카테고리의 다른 글
[DOCKER] 도커 port / expose 에 대해 (1) | 2024.10.21 |
---|---|
[DOCKER] 헬스체크 (2) | 2024.10.03 |
[Docker] 도커 및 도커 컴포즈 설치 (0) | 2024.09.25 |
[Docker] 도커란? (1) | 2024.09.25 |
[Docker] Private 도커 허브와 크레덴셜 (7) | 2024.09.24 |