[도커 네트워크] 도커 network

su-mmer·2022년 9월 7일
0

아묻따 도커 공부

목록 보기
4/18

도커 네트워크

  • 도커는 컨테이너를 이용해서 어플리케이션을 격리 환경에서 실행
  • 대부분의 어플리케이션은 외부의 사용자에게 서비스 제공이 목적
  • 서비스를 제공하기 위해 네트워크 구성이 필요
  • 가상 브릿지와 가상 네트워크 인터페이스 등을 사용
  • 컨테이너 생성 시 기본적으로 bridge 네트워크로 설정
  • 컨테이너 생성 시 네트워크 종류, dns, etc/hosts, hostname, 포트포워딩 등 설정

네트워크 종류(driver)

1. bridge

  • 내부적으로 컨테이너끼리 서로 연결되어 있으면서 가상브릿지(docker0)를 통해 외부와 연결
  • 필요에 따라 추가적으로 브릿지 생성 가능하며 그에 따라 새로운 가상브릿지 생성
    docker network create
  • 기본 설정일 경우 외부에서 컨테이너로 접속이 제한
  • 외부에서 접근하려면 포트포워딩 설정 필요
    docker container run -p 호스트포트:컨테이너포트
  • 동일한 브릿지에 연결된 경우 어플리케이션(컨테이너)끼리 통신 가능
  • 컨테이너 생성 시 --link 옵션으로 기존의 컨테이너를 이름으로 접근할 수 있게 설정
    ⇒ 컨테이너의 IP주소가 바뀔 수 있기 때문에 사용
  • docker network connect 명령어로 기존의 컨테이너에 다른 브릿지를 추가 연결(--link 옵션 가능)
docker run -itd --name <os_br> --network bridge centos

2. host

  • 물리적인 호스트의 네트워크 인터페이스(스택)을 공유하는 형태 (컨테이너가 host의 네트워크를 그대로 가져다 사용)
    ⇒ 컨테이너에 별도의 IP 주소 등이 할당되지 않음
  • 현재 시스템의 IP 주소를 통해서 접근 가능. 단, 포트번호가 겹치는 이미지를 함께 사용 할 수없음
  • 장점은 별도의 설정 없이 외부에서 컨테이너로 접근 가능
  • 추가 생성 불가
docker run -itd --name <os_host> --network host centos

3. null(none)

  • 컨테이너에 네트워크를 할당하지 않는 형태
  • 추가 생성 불가
docker run -itd --name <os_none> --network none centos
  • inspect 창에서 보면 bridge는 IPAddress가 있고, host와 none은 IPAdddress가 존재하지 않는다.
  • bridge, host는 외부 통신이 가능하고 none은 불가능하다.

<추가 네트워크>

4. macvlan

  • mac 주소를 별도로 할당하는 방식
  • 컨테이너에 mac 주소를 할당해서, 외부에서는 마치 호스트에 물리적인 인터페이스를 추가한 것처럼 인식하도록 IP 주소를 따로 할당
  • 실제 IP 주소가 필요하고, 인터페이스의 부하 증가, 보안적인 위험 증가

5. ipvlan

  • macvlan과 유사한 형태(기능적인 경량화)

6. overlay

  • docker swarm을 사용할 경우 필요

컨테이너 생성 시 네트워크 할당

  • docker container run: 기본은 bridge 설정
  • --network 옵션 사용 시 선택 가능
  • 네트워크 인터페이스에서 하나의 포트는 하나의 프로세스(서비스)가 사용 (host 네트워크는 물리 시스템과 포트 공유)

커넥트

  • docker network connect 명령어로 만들어둔 컨테이너와 네트워크를 연결할 수 있음
  • host 네트워크는 연결/제거할 수 없음
  • 링크: --link 옵션 사용 시 컨테이너를 이름으로 통신할 수 있음
    • network connect 명령어의 옵션인 경우에는 양방향 가능
    • docker container run 명령어의 옵션인 경우에는 단방향 가능

0개의 댓글