1. 컨테이너 네트워크
- 실행 중인 컨테이너는 IP 주소를 할당받기 때문에 컨테이너 간 통신을 할 수 있다.
- ubuntu 호스트 내에서 접근 가능한 전용 네트워크를 통하면 예를 들어서 어플과 데이터베이스를 연결하는 것도 가능하다.
- 도커 허브에는 Rocket. Chat, ownCloud, Redmine, wordPress 등 컨테이너 간의 연결을 이용하는 어플 이미지가 있다.
1) 컨테이너 네트워크
컨테이너 네트워크는 도커 간의 네트워크라고 할 수 있다. 도커 허브에 등록된 어플들은 --link 명령을 사용하여 컨테이너를 연동하게 된다.하지만, 최근 추세는 docker network를 이용하여 작업하고 있다.
도커 서버의 경우 아래와 같이 네트워크 명령어를 사용하여 작업하게 된다.
[+] docker network ls
- 도커에서 사용중인 네트워크 리스트 확인(컨테이너 네트워크)
[+] docker network create <network_name>
- 도커에서 사용할 네트워크 생성
[+] docekr run -d -it --name webser10 --network my-net nginx:lates
- 만들어진 네트워크로 nginx 서비스 진행하기
[+]docker network inspect <네트워크_명>
- 네트워크_명을 지정하게되면 해당 네트워크를 사용하고 있는 host 정보를 확인할 수 있다.
[+] 각각 네트워크 주소가 다른 것을 확인할 수 있다.
[+] 같은 네트워크 대역에서 웹사이트 접속 여부 확인
- localhost 접속과 외부에서 IP주소를 통해 접속 확인
[+] 다른 광역대에서 네트워크 확인(172.18.0.2 와 172.17.0.2)
- bridge 네트워크 대역에서도 해당 웹사이트로 접속되는지 확인(외부)
- 확인하기 위해서 먼저 curl을 설치해준다.
apt update && apt -y install curl ##그래픽 모드가 아니기 때문에 인스톨
- 접속할 수 없는 것을 확인할 수 있다. (포트가 외부에 접속 불가)
- 파드간에는 접속할 수 없다.
[+] 만약, 외부에서 접속 가능하도록 하려면 포트번호와 매핑하여 생성한다.
- 외부 ubuntu에서 접속할 수 있다.
[+] 가용성
- 중요한 것은 컨테이너 Nginx 웹 서버가 worker01 노드에서 실행되고 있어도 외부 호스트 ubuntu에서 이 웹 서버 컨테이너의 접속은
master01 노드가 Control-Plane이므로 mastero1 노드를 통해서 들어가 한다는 것이다.
- 만일, worker01에서 Nginx가 실행되다가 다운되면 master Control-Plane이 자동으로 이 Nginx 서비스를 worker02로 이동해서
Nginx 서비스를 지속해 주기 때문이다.
[+] 지금까지의 실습으로 통해 확인할 수 있는 내용
- 같은 네트워크에 속해 있는 컨테이너들은 서로 통신이 되지만 다른 네트워크에 있는 컨테이너와는 통신이 되지 않는다.
- 이들이 통신되게 하려면 컨테이너 서비스에 외부에서 접근할 수 있어야 한다는 점이다.
- 방안 :
- 포트-포워드 기법(8080:80)을 통해 서비스 가능
- 또, 이들 컨테이너 네트워크들을 연결해주는 라우터가 있다면 더 수월하다.
- 즉, 이런 이유로 SDN(Software Defined Network)가 클라우드에서 절대적으로 필요하다!!!!!
**소프트웨어 정의 네트워킹(SDN)은 네트워크에서 트래픽을 이동하고 기반 하드웨어 인프라와 통신하기 위해 소프트웨어 기반 컨트롤러
또는 애플리케이션 프로그래밍 인터페이스(API)를 활용하는 네트워킹에 대한 접근 방법
'소소한 IT이야기 > 클라우드' 카테고리의 다른 글
kubernetes 에러 정리 (feat .M2) (3) | 2023.03.29 |
---|---|
[Cloud] 쿠버네티스 명령어 정리-002 (1) | 2023.03.23 |
[Cloud]Docker 웹 서버 구축 및 서비스 - 002 (feat. 웹 서비스) (1) | 2023.03.14 |