-
[docker-machine 정리] 도커 머신 으로 aws ec2 에 프로비저닝 하기개발일지/docker 2020. 6. 13. 21:55
안녕하세요 개발하는 남자 개남입니다.
오늘은 지난번에 이어서 도커 머신을 사용하는 이유 중 2번째 원격 시스템에 docker호스트를 프로비저닝 하는 방법에 대해서 알아보고자 합니다.
지난번 도커머신 정리 내용은
로컬 PC 가 도커를 활용할 수 없는 오래된 PC 일 경우, 혹은 새로운 버전의 도커를 돌릴 환경이 아닐 경우에 도커 머신을 통해 VM에 도커를 프로비저닝 하는 방법을 알아보았습니다.
지난번 것 확인을 원하시는 분은 아래 링크 클릭 해주세요🙂
사실 docker 공식 문서에 너무나도 자세히 친절하게 설명이 되어있기 때문에 다시 정리하는 것이 의미가 있을까? 싶었지만 도커 공부하는 차원에서 정리하면서 이렇게 포스팅을 남깁니다.
또한 공식문서는 영문이기때문에 혹시 모를 단 한 사람을 위해서 이렇게 정리해 봅니다.
Docker Machine 플러그인은 많은 클라우드 플랫폼에서 사용할 수 있기 때문에 클라우드 호스트에 프로비저닝이 가능합니다. 대표적으로는 DigitalOcean 과 AWS EC2 가 있습니다.
오늘은 친숙한 AWS EC2에 프로비저닝 하는 방법으로 실습 및 정리를 해보도록 하겠습니다.
우선 aws 계정이 필요합니다.
root 계정이나 IAM 으로 권한 받은 유저도 가능합니다.
두 상황 모두 엑세스 키 시크릿키를 발급받습니다.
IAM > 사용자 > 보안자격 증명 > 액세스 키 만들기 버튼 클릭
위와 같이 엑세스 키 와 비밀 키를 제공해줍니다. 비밀 키 같은 경우는 단 한 번만 받을 수 있기 때문에 반듯이 파일로 받아 놓는 것을 추천드립니다.
이렇게 되었다면 준비는 끝이 났습니다. 도커 머신 명령어로 aws ec2 프로비저닝 해볼 차례인데요, 2가지 방법이 있습니다.
-
액세스 키 시크릿 키를 옵션으로 입력하여 생성하는 방법
-
. aws/credentials을 이용하여 생성하는 방법
1번째 방법은 다음 명령어를 사용하시면 됩니다.
$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox
--amazonec2-access-key 옵션
--amazonec2-secret-key 옵션
을 통해 도커 머신을 프로비저닝 합니다.
2번째 방법은 user 홈 디렉터리에. aws/credentials 파일을 만들어서 다음과 같이 입력합니다.
[default] aws_access_key_id=AKI******* aws_secret_access_key=8T93C*******
저장하고 다음 명령어를 사용하시면 됩니다.
$ docker-machine create --driver amazonec2 aws-sandbox
편하신 방법으로 사용하시면 됩니다.
아무런 설정 없이 docker-machine create를 실행할 경우 어떤 스펙으로 서버가 세팅되는지 확인해보겠습니다.
$ docker-machine create --driver amazonec2 --amazonec2-open-port 8000 --amazonec2-region ap-northeast-1 aws-docker-machine
옵션으로 2가지를 추가하였습니다. port 개방과 리전 선택입니다.
해당 명령어를 실행하면 아래와 같이 프로비저닝 됨을 확인할 수 있습니다.
aws 웹 콘솔 접속하여 ec2로 가보면 입력한 이름으로 서버가 세팅된 것을 확인할 수 있습니다.
기본적으로 인스턴스 유형은 t2.micro 네요 또한 보안 그룹으로는 docker-machine이라는 보안 그룹이 잡혀있는 것을 확인할 수 있습니다.
8000번 포트는 제가 옵션으로 개방했던 포트이며 , 2376 포트는 도커 머신이 통신하는 포트입니다.
$ docker-machine create --driver amazonec2 --help
명령어를 통해 지원되는 옵션들을 확인할 수 있습니다.
그중에 자주 사용할 것 같은 옵션들을 나열하자면.
--amazonec2-instance-type = 인스턴스 타입 설정 --amazonec2-open-port = 포트 개방 (다중 개방을 원할시 [ --amazonec2-open-port 8000 --amazonec2-open-port 8080 ]) --amazonec2-region = 리전 설정 --amazonec2-root-size = 루트 디스크 사이즈 설정 (GB 단위) --amazonec2-access-key = 엑세스키 --amazonec2-secret-key = 비밀키
이 정도만 알아도 될 것 같습니다.
이제 생성된 도커 머신을 확인해보겠습니다.
$ docker-machine ls
지난번 VM으로 만든 default 머신과 aws-docker-machine 이 있습니다.
이제 해당 서버로 접속하여 명령어를 활용하기 위해서는 ssh 명령어를 활용하면 됩니다.
$ docker-machine ssh <machine 이름>
접속하지 않고 로컬의 docker-machine 환경을 target machine으로 변경하여 로컬에서 실행하는 것처럼 가능합니다.
$ docker-machine env aws-docker-machine export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://xx.xxx.xxx.xxx:2376" export DOCKER_CERT_PATH="C:\Users\bbtree\.docker\machine\machines\aws-docker-machine" export DOCKER_MACHINE_NAME="aws-docker-machine" export COMPOSE_CONVERT_WINDOWS_PATHS="true" # Run this command to configure your shell: # eval $("C:\Users\bbtree\bin\docker-machine.exe" env aws-docker-machine)
이제 eval 명령을 통해 환경을 바꿔 보겠습니다.
$ eval $("C:\Users\bbtree\bin\docker-machine.exe" env aws-docker-machine)
docker-machine ls로 확인해보면 aws-docker-machine 이 활성화되어있는 것을 확인할 수 있습니다.
이제 맘 편하게 docker 명령어를 활용하여 docker 컨테이너를 띄울 수 있습니다.
target machine에서 다시 나오기 위해서는 -u --unset 옵션을 사용하면 됩니다.
$ eval $("C:\Users\bbtree\bin\docker-machine.exe" env --unset)
여기까지 docker-machine으로 aws ec2 프로비저닝 하는 방법을 알아보았습니다.
다음 시간에는 docker swam을 알아보겠습니다.
'개발일지 > docker' 카테고리의 다른 글
[ private docker registry ] 비공개 도커 허브 구축 / 나만의 , 회사의 도커 registry 를 만들어 보자. (0) 2020.08.11 도커 머신을 활용해 로컬 VM에 프로비저닝 해보자. (1) 2020.06.06 [ docker-compose ]도커 컴포즈가 무엇이고 어떻게 실행하는 것일까? (0) 2020.06.03 도커 ubuntu 에 설치 하자 (0) 2020.05.10 도커 window 10 에 설치 하자 (0) 2020.05.10 -