[Docker] swarm 맛보기

3187 단어 dockerdocker
  • 아마존 aws 이용, ec2 기계 위에서 swarm을 돌려보자.
  • 돌릴 이미지는 apache 서버이다.

준비

aws에서 설정

  • ec2 인스턴스 2개가 있어야 한다. leader와 worker가 된다.
  • TCP 2377, 5000 번 포트를 인바운드 룰에서 열어둔다.

docker 설치

두 인스턴스에 docker를 설치한다.

dockerfile 준비

디렉토리 하나 파서 준비

vim dockerfile

FROM ubuntu
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get install -y apache2
ADD . /var/www/html
ENTRYPOINT apachectl -D FOREGROUND
docker build -t <username>:apache /home/ubuntu/swarm_1/

빌드 후 push해서 도커헙에 등록

만약 Geographic 선택 창에서 안 넘어간다면

Ctrl C로 죽이고 ENV 라인이 있는지 확인한다.

docker login

다커헙 아이디 비번으로 로그인 후 push

docker push <username>/apache

실행

swarm 초기화

leader

docker swarm init --advertise-addr=<leader의 private ip주소>

스웜 클러스터의 리더가 되도록 초기화하는 작업.

결과로

To add a worker to this swarm, run the following command:
	docker swarm join --token ...

해당 명령어를 복사한다.

worker

복사한 명령어를 붙여넣기 한다.

안되면 sudo

This node joined a swarm as a worker.

leader

docker node ls

를 해서 worker 노드들이 잘 추가 되었는지 확인한다.

같은 명령어를 worker에 입력하면, This is not a swarm manager 라고 나온다.

서비스 설정 (name, replica)

leader

sudo docker service create --name <name> --replicas 5 -p 5000:80 <imageName>
  • --name 서비스이름
  • --replicas 레플리카 수
  • --p 포트번호
    • 이번에 apache 서버 띄울 거니까 80번으로 포트포워딩
  • <imageName>
    • 예시: 00mari/test
    • 도커헙에 올려진 이미지 입력
    • 이 똑같은 이미지를 worker에서도 가져올 거임

성공한다면 레플리카 수(5) 만큼 running이 뜬다.

docker ps

하면 몇개의 컨테이너가 돌아가는 걸 볼 수 있다.

worker

docker ps

여기서 돌아가는 컨테이너 수도 합치면 전체 레플리카 수가 나와야 됨

레플리카 수 줄이기

docker service scale 서비스명=레플리카수 

좋은 웹페이지 즐겨찾기