Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • Kubernetes
  • 백트래킹
  • django
  • DFS
  • 프로그래머스
  • boj
  • 다이나믹 프로그래밍
  • BFS
  • docker
  • Network

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

[Docker] Docker Swarm 서비스하기
DevOps/Docker

[Docker] Docker Swarm 서비스하기

2021. 8. 24. 00:33
 

[Docker] Docker Swarm에 대해서

[Docker] docker-compose로 편하게 개발환경 구성하기 [Docker] Django 개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Co..

hyeo-noo.tistory.com

 

지난 포스팅에서 도커 스웜의 필요성을 정리했었다.

 

지금까지 한 내용을 요약해보면

  1. 개별적인 이미지들을 하나씩 컨테이너로 수동으로 만들어 주고 컨테이너끼리 연결해보았다.
  2. 컨테이너 설정을 모아둘 수 있는 docker-compose를 이용해서 한 번에 필요한 모든 컨테이너를 가동시켰다.

 

이제 docker swarm을 시작하고 지금까지 만들었던 컨테이너들을 service로 격상시켜서 사용해 볼 것이다.

 


도커 스웜 준비

$ git clone https://github.com/hyun98/Docker_Practice.git​

먼저 git clone 후 docker-compose.yml 파일을 수정해야한다.

 

service로 격상시켜서 사용하려면 docker-compose에서 이미지를 빌드시켜서 사용하는게 아니라 이미 만들어져 있는 이미지를 사용해야 한다.

그래서 djangotest 먼저 만들어야 한다..!

 

$ docker build -t djangoimg -f localhost.Dockerfile .

항상 맨 마지막에 dockerfile의 위치를 알려주는 . 을 까먹지 말자!

 

 

이미지를 빌드했다면 docker-compose.yml 파일을 열어보자

 

위 부분을 아래와 같이 새로 만들 이미지로 설정해준다.

mariadb 이미지 설정부분과 동일하다.


도커 스웜 시작

 

$ docker swarm init

터미널에 코드를 입력하자.

 

위와 거의 똑같은 글자들이 나올것이다

현재 노드(서버)가 매니저 노드가 되었고, worker 노드를 추가하려면 worker노드에서 docker swarm을 init한 후 

docker swarm join --token <manager node token> 커맨드를 입력하라고 한다. 나중에 서버의 용량이 부족해지면 노드를 추가해서 쉽게 사용할 수 있게된다.

 

 

노드 확인

 


도커 스택

 

지난 포스팅에서 적었던 글을 다시 가져왔다.

 

stack스택 : 서비스의 묶음 단위. 스택이라는 공간 내부에 웹서버 컨테이너, db컨테이너등을 구축한다. 하나의 스택으로 묶인 컨테이너들은 기본적으로 같은 overlay 네트워크에 속하게 된다.

현재 스택 상태 확인

 

일단 docker-compose.yml을 통해서 스택과 서비스를 만들어 보자!

$ docker stack deploy -c .\docker-compose.yml djangostack

// docker stack deploy --compose-file docker-compose.yml {stack이름}

 

 stack에 해당되는 모든 서비스는 {stack이름}_ 으로 시작한다

 

 

명령을 실행하면 docker 네트워크가 먼저 생성되고 mariadb, djangotest 서비스가 생성된다.

 

 

 

 

docker stack ls

현재 docker에 있는 모든 stack을 보여준다.

해당 stack에 몇 개의 service가 있는지, Orchestration 툴은 어떤것을 사용하고 있는지 나타난다.

 

 

docker service ls

현재 가동중인 모든 service를 보여준다. 상태에 대한 정보도 확인할 수 있다.

 


도커 service의 장점

 

여기까지 보면 docker-compose up -d 와 별 차이점을 못 느낄 것이다. 

service가 container들을 직접 실행하는 것에 비해 가지는 장점이자 가장 큰 차이점은 image파일의 업데이트, 연결된 network 및 volume등의 구성을 service를 중단할 필요없이 수정할 수 있다는 점이다.

 

그리고 service는 갑자기 알수없는 오류로 인해서 컨테이너 하나를 못쓰게 되면 즉시 새로운 컨테이너를 만들어서 구동시키게 된다.

 

 

다음 포스팅에서 service의 replica에 대해서 알아보고, stack update를 다룰 예정이다.

 

'DevOps > Docker' 카테고리의 다른 글

[Docker] 컨테이너 기능별, 포트별 분리 (feat. nginx)  (0) 2021.11.22
[Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기  (0) 2021.11.14
[Docker] Docker Swarm에 대해서  (0) 2021.08.18
[Docker] docker-compose로 편하게 개발환경 구성하기  (0) 2021.08.10
[Docker] Docker 관련 tip #1  (0) 2021.08.10
    'DevOps/Docker' 카테고리의 다른 글
    • [Docker] 컨테이너 기능별, 포트별 분리 (feat. nginx)
    • [Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기
    • [Docker] Docker Swarm에 대해서
    • [Docker] docker-compose로 편하게 개발환경 구성하기

    티스토리툴바