공부/클라우드

클라우드 시스템(7) - Container 통신과 운영

minsun24 2024. 12. 3. 02:28

컨테이너 네트워크

Container Network

컨테이너 네트워크 구조

  : L2 통신 기반

  : 컨테이너 생성 시 생성되는 veth 인터페이스 이용.

  : docker0(172.17.X.Y)를 통해 외부와 통신한다.

 

네트워크 종류

  • Default Bridge Network : Docker 제공, 개발환경 테스트에 적합.
  • User-Defined Bridge Network : 같은 host 내 실행중인 컨테이너 간 연결. 실제 프로덕션 환경에 적합.
  • Overlay Network : Docker Swarm용

컨테이너 간 네트워크 통신

  : Container IP로 통신 > 컨테이너 ip로 통신. 단, 재시작 시 ip가 변경되면 접속 불가.

  : Container Name으로 통신 > --link 옵션을 통해 컨테이너 이름으로 통신.(권장x)

  : User-defined network > 사용자 지정 네트워크로, 원하는 ip 대역을 지정할 수 있다. 

  • docker create network [네트워크 이름]
  • docker ls network
  • docker rm network [네트워크 이름]

포트 포워딩

Port-forwarding

  : 컨테이너로의 외부 연결 허용

  : Iptables rule을 통해 포트를 노출 시킨다.

  • -p hostPort:containerPort
  • -p containerPort / -p

컨테이너 빌드/운영

Docker Compose

  : 단일 서버에서 여러 컨테이너를 하나의 서비스로 정의해 묶음으로 관리할 수 있는 도구.

  : compose.yaml 파일에 서비스할 컨테이너를 정의한다.

 

명령어 - yaml 문법 / command 명령

  • version : 도커 컴포즈 파일의 버전.
  • service : 컨테이너 실행 단위
  • build : bulid할 Dockerfile의 경로
  • ports [호스트]:[컨테이너]  : 포트포워딩
  • volume : 바인드 마운트, 볼륨 지정
  • image : 실행할 이미지 지정.
  • command : 컨테이너에서 실행될 명령
  • link : 연계할 컨테이너
  • expose : 연계 컨테이너에 공개할 포트
  • environment : 환경변수 설정
  • restart : 종료 시 적용할 restart 정책
  • depends_on : 컨테이너 간 종속성 정의