데이터센터프로그래밍13
13-Docker Swarm(1)
🔴 Docker Swarm (1)
- 복수의 container가 있더라도 cli를 통해 통제할 수 있다.
- machine, container를 여러개 띄어도 모두 통제할 수 있다는 것을 동일하지만, 이 모든것을 손으로 수작업(타이핑)하는 방법은 힘들다.
- 그러므로, 자동화된 방법을 사용하는 것이
Docker Swarm
이다.Docker Swarm
을 하기 위해서는 docker & docker-machine이 설치되어 있어야 한다.
🔴 Docker Swarm (2)
- 여러개의 node들 위에서 도커 컨테이너들을 띄우는 것이다.
- 머신들 위에서 Docker Swarm을 사용하여 수많은 컨테이너들이 동작한다.
- Orchestration에는 manager가 있는데, 이는 yml 파일을 확보하며, yml 파일에 맞춰서 이미지 별로 컨테이너를 띄우는 worker들을 제어하는 모델이다.
🔴 Docker makes a single virtual system
- 실행하고자 하는 어플리케이션을 수많은 서비스 이미지들을 넣고, yml으로 configration을 해서 yml 파일을 command rise interface로 뿌리면, 수많은 컨테이너로 분할이 된다.
- 도커머신을 통해 원격에 있는 컴퓨터들을 관리할 수 있고
- Docker Swarm은 원격 node를 관리하는 그 이상으로 그 위에서 실행되는 서비스와 컨테이너들츨 관리하기 위한 용도로 사용할 수 있다.
- 따라서, 도커머신으로 node를 확보하고, 실질적인 서비스는 docker compose yml 파일로 만들어서 아래의 그림과 같이 수행한다.
🔴 Orchestrator
- Container Orchestration Basic
: yml 파일의 내용을 수많대의 컴퓨터를 띄워주고, 네트워킹의 편리함을 제공한다.
:automatic
즉, 자동화라는 편리함 때문에 사용하는 것이다.
▶ 쿠버네티스는 Orchestration이고, Orchestration을 하는 대상은 도커컨테이너이다.
🔴 실습 (1)
# Docker Toolbox 설치 후 IP를 못 얻어오는 경우 $ docker-machine rm default $ docker-machine create --driver virtualbox default # Create docker machines docker-machine create --driver virtualbox manager docker-machine create --driver virtualbox worker1 docker-machine create --driver virtualbox worker2 # check docker machines docker-machine ls docker-machine ip manager docker-machine worker1 docker-machine worker2 docker-machine ssh manager docker-machine ssh worker1 docker-machine ssh worker2 # define manager node(1) docker-machine ssh {manager name} \ docker swarm init--advertise-addr {manager ip} docker-machine ssh manager \ docker swarm init --advertise-addr ###.###.##.###
🤜 docker swarm join --token번호 반드시 기억하기
🔴 실습 (2)
# swarm node management by manager docker-machine ssh manager \ docker node --help docker-machine ssh manager \ docker node --ls # docker swarm joining at worker machine docker-machine ssh {worker name} \ docker swarm join ---token <token> <manager ip>:####
🔴 Docker stack
- Swarm은 이 튜토리얼의 이전 단계에서했던 것처럼 개별 컨테이너를 만들지 않는다.
- 모든 Swarm 객체는 stack files이라는 manifisets에서 설명 될 수 있다.
- 즉, 실행하고자 하는 yaml 파일을 swarm에 만들고자 하는 어플리케이션을 포함시킬 것이다.
🔴 Task deployment (1)
# create docker-compose.yml version: "3.7" services: # 웹서버가 하나가 이미지로 들어가 있음 webserver: # 이미지는 nginx 최신 버전임 image: nginx:latest deploy: # 4개의 컨테이너로 띄워달라는 의미 replicas: 4 # placement는 규칙임 placement: # manager인 경우, 웹서버 일을 하지 않도록 명령 constraints: [node.role != manager] ports: -8080:80
🔴 Task deployment (2)
# Copy docker-compose.yml into manager (yml 파일 주기) docker-machine scp docker-compose.yml manager:~ # Deploy application stack through manager (일해~) docker-machine ssh manager \ docker stack deploy -c docker-compose.yml helloswarm # Check stack deployment status docker-machine ssh manager \ docker stack ls
🐧 docker machine
scp
란?
- 자신이 작업하는 local host에서 machine으로 파일을 copy하는 것
🔴 Task monitoring
docker service ls docker service ps helloswarm docker service ps helloswarm_webserver
🔴 Task release
# deployed stack release docker-machine ssh manager \ docker stack rm helloswarm
🔴 Release Worker Nodes
# worker node leave a joined swarm docker-machine ssh {worker name} \ docker swarm leave # start docker-machine ssh worker1 \ docker swarm leave docker-machine ssh worker2 \ docker swarm leave
🔴 Remove docker machines
docker-machine stop docker-machine rm
Author And Source
이 문제에 관하여(데이터센터프로그래밍13), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dkddkkd55/데이터센터프로그래밍13저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)