ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [docker-machine 정리] 도커 머신 으로 aws ec2 에 프로비저닝 하기
    개발일지/docker 2020. 6. 13. 21:55

    안녕하세요 개발하는 남자 개남입니다.

     

    오늘은 지난번에 이어서 도커 머신을 사용하는 이유 중 2번째 원격 시스템에 docker호스트를 프로비저닝 하는 방법에 대해서 알아보고자 합니다.

     

    지난번 도커머신 정리 내용은

    로컬 PC 가 도커를 활용할 수 없는 오래된 PC 일 경우, 혹은 새로운 버전의 도커를 돌릴 환경이 아닐 경우에 도커 머신을 통해 VM에 도커를 프로비저닝 하는 방법을 알아보았습니다.

    지난번 것 확인을 원하시는 분은 아래 링크 클릭 해주세요🙂

     

    https://sudarlife.tistory.com/entry/%EB%8F%84%EC%BB%A4-%EB%A8%B8%EC%8B%A0%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%B4-%EB%A1%9C%EC%BB%AC-VM%EC%97%90-%ED%94%84%EB%A1%9C%EB%B9%84%EC%A0%80%EB%8B%9D-%ED%95%B4%EB%B3%B4%EC%9E%90

     

    사실 docker 공식 문서에 너무나도 자세히 친절하게 설명이 되어있기 때문에 다시 정리하는 것이 의미가 있을까? 싶었지만 도커 공부하는 차원에서 정리하면서 이렇게 포스팅을 남깁니다.

    또한 공식문서는 영문이기때문에 혹시 모를 단 한 사람을 위해서 이렇게 정리해 봅니다.

     

     

    Docker Machine 플러그인은 많은 클라우드 플랫폼에서 사용할 수 있기 때문에 클라우드 호스트에 프로비저닝이 가능합니다. 대표적으로는 DigitalOcean AWS EC2 가 있습니다.

     

    오늘은 친숙한 AWS EC2에 프로비저닝 하는 방법으로 실습 및 정리를 해보도록 하겠습니다.

     

    우선 aws 계정이 필요합니다.

    root 계정이나 IAM 으로 권한 받은 유저도 가능합니다.

    두 상황 모두 엑세스 키 시크릿키를 발급받습니다.

     

     

    IAM > 사용자 > 보안자격 증명 > 액세스 키 만들기 버튼 클릭

     

     

    위와 같이 엑세스 키 와 비밀 키를 제공해줍니다. 비밀 키 같은 경우는 단 한 번만 받을 수 있기 때문에 반듯이 파일로 받아 놓는 것을 추천드립니다.

     

    이렇게 되었다면 준비는 끝이 났습니다. 도커 머신 명령어로 aws ec2 프로비저닝 해볼 차례인데요, 2가지 방법이 있습니다.

     

    1. 액세스 키 시크릿 키를 옵션으로 입력하여 생성하는 방법

    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을 알아보겠습니다.

    댓글

Designed by Tistory.