m1 mac 환경에서는 현재 virtualbox가 지원이 안돼서 docker-machine driver에 aws ec2가 있길래 이걸 이용해서 docker swarm 실습을 진행해봤다!
access_key와 secret_key는 본인의 key를 적어주면 됩니다
(저는 aws IAM에서 AmazonEC2FullAccess 라는 권한을 추가해준 사용자로 했어요)
docker-machine create --driver amazonec2 --amazonec2-access-key {access_key} --amazonec2-secret-key {secret_key} --amazonec2-open-port 8000 --amazonec2-region ap-northeast-2 manager
manager 뿐만 아니라 worker1 ,2 도 만들어주면 됩니다~(시간이 좀 걸려요)
그다음 docker-machine ls로 잘 올라가져 있는지와 ip를 확인하면 돼요!
docker swarm을 하기 전에 접근 권한 에러가 떠서 저는 각각의 ec2 콘솔로 들어가서 /var/run/docker.sock을 777이나 666으로 바꿔줬어요(보통 777은 권장하질 않으니,,,) 그리고 manager 인스턴스는 인바운드 규칙을 수정해줘야하는데 2377port에 대해서 허용해주면 됩니다!!!
여기까지 다했으면 이제 docker swarm 실제로 해보기만 하면 돼요!
docker-machine ssh manager \ docker swarm init --advertise-addr {manager ip}
잘 실행이 됐다면 토큰 같은게 나올텐데 아래처럼 worker1과 2를 manager에 join 시켜주면 돼요
docker-machine ssh worker1 \
docker swarm join --token {token} {manager ip}:2377
그 다음 제가 작성한 yml을 manager로 옮겨서 docker stack을 통해 deploy를 시켜주면 됩니다!(yaml파일은 깃허브에 있어요)
https://github.com/Eeap/dcp-dockerHW/blob/main/docker-swarm/docker-compose.yml
#파일 복사
docker-machine scp docker-compose.yml manager:~
#test라는 이름으로 docker swarm 수행
docker-machine ssh manager docker stack deploy -c docker-compose.yml test
docker-machine ssh manager docker stack ls
docker-machine ssh manager docker service ls
#상태 확인
docker-machine ssh manager docker service ps test_webserver
테스트를 다 해봤으면 다 내려줘야하는 작업도 필요합니다!!
#배포된걸 release하는 순서
#먼저 stack 삭제
docker-machine ssh manager docker stack rm test
#worker swarm에서 제거
docker-machine ssh worker1 docker swarm leave
docker-machine ssh worker2 docker swarm leave
#manager 같은 경우는 --force옵션을 줘서 삭제해야해요
docker-machine ssh manager docker swarm leave —force
#그 다음 사용했던 머신들도 다 꺼주고 필요하다면 삭제하면 돼요
docker-machine stop worker1
docker-machine stop worker2
docker-machine stop manager
'Cloud > Docker' 카테고리의 다른 글
Docker 기본 개념 및 명령어 정리! (0) | 2022.08.10 |
---|