GCP(Google Compute Engine)에 Docker Machine 넣기

5252 단어 도커gcpgce
아무리 뭐든지 MacBook에서는 너무 무거워서 Google Compute Engine에 두기로 했다.

이쪽을 참고로 하면서.
  • ぃ tp // 이 m / 네 lh / ms / 428 24022955b0 8616

  • 사전 준비



    gcloud의 최신 버전 설치


    pip install gcloud
    

    gcloud에 로그인


    gcloud auth login
    

    디폴트라면 브라우저가 일어나서 로그인하게 된다.

    Google Compute Engine에서 Nginx 컨테이너 이동



    docker-machine 만들기



    작업용이라면 선점형 인스턴스 사용 일로 상당히 싸게 되는 것과, 잘못 방치해도 24시간에 사라져 주기 때문에 --google-preemptible 는 지정해야 한다. 그리고 태그로서 http-serverhttps-server 를 지정해 두면, 80 과 443 이 비어 있으므로 편리합니다. (보안에주의하십시오)
    $ docker-machine create -d google \
                            --google-project <PROJECT_NAME> \
                            --google-preemptible \
                            --google-tags 'http-server,https-server' \
                            --google-zone asia-east1-a \
                            --google-machine-type "g1-small" \
                            newton
    

    나왔다.
    $ docker-machine ls
    NAME      ACTIVE   DRIVER       STATE     URL                          SWARM
    default   -        virtualbox   Running   tcp://192.168.99.100:2376
    newton    -        google       Running   tcp://XXX.XXX.XXX.XXX:2376
    

    docker-machine을 전환합니다.
    $ eval $(docker-machine env newton)
    
    $ docker info
    Containers: 1
    Images: 12
    Server Version: 1.9.0
    Storage Driver: aufs
     Root Dir: /var/lib/docker/aufs
     Backing Filesystem: extfs
     Dirs: 14
     Dirperm1 Supported: true
    Execution Driver: native-0.2
    Logging Driver: json-file
    Kernel Version: 3.19.0-28-generic
    Operating System: Ubuntu 14.04.3 LTS
    CPUs: 1
    Total Memory: 3.614 GiB
    Name: newton
    ID: GSHG:YOET:XXXX:EZ7T:CWX4:S4CC:6HZX:XXXX:OAPR:STQE:WKTH:LCBR
    WARNING: No swap limit support
    Labels:
     provider=google
    

    nginx를 시작해보기


    $ docker pull nginx
    $ docker run -d -p 80:80 --name nginx nginx
    c9ff75a9d98b9f0171e6bbcf7b475c45c8ecff980ca0e67264dc6bd895f85c65
    

    본래 그대로 만든다.

    동작 확인



    http 트래픽을 허가해 주면 액세스할 수 있게 된다.
    $ curl http://$(docker-machine ip newton)
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page,
    
    ....
    

    좋아요.

    http 포트에 액세스할 수 없는 경우


    $ curl http://$(docker-machine ip newton)
    curl: (7) Failed to connect to XXX.XXX.XXX.XXX port 80: Operation timed out
    

    어...?

    라고 생각했지만 GCE의 인스턴스는 디폴트에서는 외부로부터의 http 리퀘스트를 받아들이지 않는다. 위의 순서로 --google-tag "http-server" 하고 있으면 연결된다고 생각합니다만, 가끔 틀리거나 하기 때문에 콘솔에서 재검토하자.



    Docker Machine에서 GCE 인스턴스를 만들 때 등록되는 공개 키의 형식이 변경됩니다.



    DockerMachine씨가 자동 생성한 인증 정보를 인스턴스에 자동 등록해 주고 있지만, 공개키에 유저명이 쓰여 있지 않기 때문에, 그대로 편집하려고 하면 저장할 수 없다. "잘못된 열쇠입니다"라고 화난다.



    당황하지 말고, 끝에 왠지 적당한 username 를 추가해 주자. 우세 r なめ@えぁ mpぇ. 이 m 와 메일 주소 형식으로 쓰여져 있지만, 적당한 이름으로 좋다.

    사용이 끝나면



    docker-machine 명령으로 떨어뜨리면 GCE 측에서 인스턴스가 제대로 사라집니다.
    $ docker-machine rm newton
    

    좋은 웹페이지 즐겨찾기