본문 바로가기
Docker

[Docker 수업] 20241020 컨테이너 네트워크 관리 (8장)

by bestchoco 2024. 10. 20.

상황가정1:

- docker container run -d -p 8080:80 nginx 

 

=> docker1(192.168.2.10)

 

web001               web002            web003

Port 80                Port 80              Port 80

 

docker container run -d --name web1 -p 8081:80 nginx

docker container run -d --name web2 -p 8082:80 nginx

docker container run -d --name web3 -p 8083:80 nginx

 

 

* http://192.168.2.10:8081 접속할 경우 web1로 간다.


 

(중요)

- 컨테이너 포트 매핑

- 컨테이너 호스트명 파일 설정


포트매핑 (포트포워딩) 테스트


docker1[docker0]

 

ens: 실제 리눅스 장비

 

docker0 : 컨테이너의 게이트웨이 역할


 

          +-------------------+
          |      외부망        |
          +---------+---------+
                    |
                    |
          +---------+---------+
          |        docker0    |
          |    (172.17.0.1)   |
          +---------+---------+
                    |
                    |
          +---------+ ---------+ ---------+ ---------+
          |       Switch (데이터 흐름 관리)      |
          +---------+---------+ ---------+ ---------+
                    |
         +----------+----------+
         |                     |
 +-------+-------+     +-------+-------+
 |     myweb1    |     |     myweb2    |
 |  (172.17.0.2) |     |  (172.17.0.3) |
 +---------------+     +---------------+
                   
                    
          +---------+ ---------+ ---------+ ---------+
          |  현재 사용 서브넷: 172.17.0.0/16   |
          +-------------------+ ---------+ ---------+

 

 

[root@e75fa95372bf /]# ip route
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3

이 출력은 현재 시스템의 IP 라우팅 테이블을 보여줍니다. 각 항목의 의미는 다음과 같습니다:

default via 172.17.0.1 dev eth0: 기본 게이트웨이는 172.17.0.1이며, 이는 eth0 인터페이스를 통해 연결됩니다. 즉, 이 IP로 가는 트래픽은 기본적으로 이 경로를 사용합니다.

172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3: 이 네트워크(172.17.0.0/16)는 eth0 인터페이스에 연결되어 있으며, 해당 인터페이스의 IP 주소는 172.17.0.3입니다. proto kernel은 커널에 의해 자동으로 추가된 경로임을 나타냅니다.

 

* 단, 172.17.0.2 (myweb1)과 172.17.0.3 (myweb2)와는 통신 불가

=> router 쪽에서 설정 (docker1) 또는 docker swarm 기능 활성화

 

* docker swarm이란?

(with CHATGPT)
Docker Swarm은 Docker에서 제공하는 클러스터 관리 및 오케스트레이션 도구입니다. 이를 통해 여러 대의 Docker 호스트를 하나의 가상 호스트처럼 관리할 수 있습니다. Swarm을 사용하면 다음과 같은 기능을 활용할 수 있습니다.

클러스터링: 여러 Docker 엔진을 클러스터로 묶어 관리할 수 있습니다.
서비스 배포: 애플리케이션을 여러 컨테이너에 배포하고, 이를 자동으로 관리합니다.
로드 밸런싱: 요청을 여러 서비스 인스턴스에 분산시켜 부하를 고르게 분산합니다.
스케일링: 필요에 따라 서비스의 컨테이너 수를 조절할 수 있습니다.
자동 복구: 장애가 발생한 컨테이너를 자동으로 재시작하거나 교체합니다.
Swarm 모드를 활성화하면 Docker CLI를 통해 클러스터를 쉽게 관리할 수 있으며, 서비스의 상태를 모니터링하고 업데이트할 수 있는 기능도 제공합니다. Swarm은 간단한 설정으로 시작할 수 있지만, 대규모 애플리케이션을 운영하기에는 Kubernetes와 같은 다른 오케스트레이션 도구에 비해 기능이 제한적일 수 있습니다.