@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • converse api
  • 인터페이스
  • bedrock agent
  • bedrock api
  • sagemaker unified studio
  • SageMaker
  • bedrock
  • flink
  • 심폴릭링크
  • AWS CodeArtifact
  • invokemodel api
  • java
  • 티스토리챌린지
  • CLASS
  • AWS CodeCatalyst
  • knowledge bases
  • Agent
  • Python
  • AWS CodeStar
  • 오블완

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Cloud/Docker

docker-machine with AWS EC2 driver

2022. 11. 1. 00:09
반응형

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
    'Cloud/Docker' 카테고리의 다른 글
    • Docker 기본 개념 및 명령어 정리!
    @Eeap
    @Eeap

    티스토리툴바