8-1. 컨테이너간 통신(네트워크)

2024. 5. 3. 19:54·쿠버네티스/docker
  1. 컨테이너 통신 방법
    1. Container Network Model
    2. docker0
      • virtual ethernet bridge:172.17.0.0/16 값을 가지는 bridge network 가 docker 0.
      • 이 대역대 안에서 docker 0는 172.17.0.1 ip를 가지고 gateway 역할을 함.
      • L2 통신기반
      • container 생성 시 veth 인터페이스 생성(sandbox)
      • 모든 컨테이너는 외부 통신을 docker0을 통해 진행
      • container running 시 172.17.X.Y로 IP 주소 할당.
    3. container 통신 방법
      • docker host system 에서 docker deamon이 실 행되면 docker 0 라고 하는 docker network interface가 생김 
      • docker 0은 virtual ethernet bridge network 를 지원해주는 가상 네트워크
      • 컨테이너의  ip대역대와 docker host 가 가지고 있는 network를 연결해주는 bridge 역할을 함.
      • bridge network 역할을 위해 network adression translation 과 port forwarding 을 지원함 (ip tables를 통해)
  2. 컨테이너 포트 외부 노출
    1. port-forwarding
      • container port를 외부로 노출시켜 외부 연결 허용
      • iptables rule을 통한 포트 노출
        • -p hostPort:containerPort
        • -p containerPort : hostport 는 rondom port 가 열리게 됨
        • -P : 랜덤포트가 자동으로 만들어지게 됨.
      • docker run --name web -d -p 80:80 nginx:1.14
        ㄴ -p 호스트 포트:컨테이너 포트 
      • iptables -t nat -L -n -v
  3. 컨테이너 네트워크 추가
    1. static ip 를 정하는 방법.
      • ip는 일반적으로 순차적으로 할당됨.
      • 기본적으로 docker 0 인터페이스 내 네트워크는 static ip 할당 불가능.
      • 단, docker 0 networkl interface 대역대를 변경하거나 user define network를 만들 수 있음.
    2. user-defined bridge network 생성
      • $ docker network create --drive bridge \  > 드라이브를 선택할 수 있는데, bridge가 default 값임.
        --subnet 192.168.100.0/24 \                     > subnet 대역대는 정해줄 수 있고, 생략할 수 있음
        --gateway 192.168.100.254 \                   > gateway 주소를 지정하여 고정할 수 있음.
        mynet                                                       > network 이름을 지정할 수 있음.
      • $ docker network ls                                 > 만들어진 네트워크 확인
      • $ docker run -d --name web -p 80:80 \ nginx:1.14
        $ curl localhost
      • $ dicjer run -d --name appjs \
        --net mynet --ip 192.168.100.100 \          > user define network 의 경우, static network 설정 가능.
        -p 8080:8080 \smlinux/appjs
      • $ curl localhost:8080
  4. 컨테이너간의 통신 방법
    1. 컨테이너를 이용한 server &  client 서비스 운영
      • # docker run -d --name mysql -v /dbdata:/var/lib/mysql -e      > /var/lib/mysql 의 컨텐츠를 /dbdata 에 저장
        MYSQL_ROOT_PASSWORD=wordpress -e                        
        MYSQL_PASSWORD=wordpress mysql:5.7                          > wordpress 가 사용하는 password
      • # docker run -d --name wordpress --link mysql:mysql -e
                                                 
        > link 를 통해 2개의 conainer 연결 (컨테이너 이름 : 원하는 이름)
        WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4
                                                 > wordpress 동작 후 만들어지는 데이터는 mysql의 db 형태로 저장됨

출처 : https://youtu.be/jOX80bXND2w

 

'쿠버네티스 > docker' 카테고리의 다른 글

9-1. 빌드에서 운영까지  (0) 2024.05.08
8-2. 컨테이너간 통신(네트워크)  (0) 2024.05.07
7-2.Docker Container Storage  (0) 2024.05.03
7-1. Docker Container Storage  (1) 2024.05.01
6-2. 컨테이너 리소스 관리하기.  (0) 2024.04.30
'쿠버네티스/docker' 카테고리의 다른 글
  • 9-1. 빌드에서 운영까지
  • 8-2. 컨테이너간 통신(네트워크)
  • 7-2.Docker Container Storage
  • 7-1. Docker Container Storage
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (176)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (32)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (2)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공존성테스트
    로스트아크
    테스트스크립트
    앱공존성
    postman
    LOSTARK
    vi에디터
    e2c
    application log
    qa
    qa conference
    사드웨어리소스
    QAKOREA
    python
    로스트아크api
    쿠버네티스
    k8s
    스터디
    .cpu
    cka
    linux
    도커
    애플리케이션로그
    네트워크 테스트
    API
    포스트맨
    테스트 결과보고서
    리눅스
    개발자에서아키텍트로
    qa 컨퍼런스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
8-1. 컨테이너간 통신(네트워크)
상단으로

티스토리툴바