Docker on Google Compute Engine【GCP】
GCPを使って外部IPを立てる選択肢
外部IPを立てるにはいくつか選択肢があります。
- Google Kubernetes Engine(GKE)を使う
- Google Compute Engine(GCE)を使う
GKEを使う場合、Kubernetesを使うので外部IPが動的になります。
GCEを使う場合、IPを固定にすることが可能です。クライアント先のサーバーにアクセスするなど、固定IPが求められるケースではGCEを使うことになるかもしれません。固定IPを実現するために、Cloud NATという選択肢もあります。
GCEで固定IPを実現する方法は2つあります。
- Dockerのコンテナを使用する
- Linux OSを使用する
ここではDockerによる方法のうち、つまづきやすいポイントを紹介します。
方法はGCPの公式、もしくは検索すればわかりやすい記事がたくさんあるのでそちらを参照ください。
Docker on GCEのつまりポイント
- ポートの開放
- VMインスタンスを再起動すると、外部IPが変わる
- Volume をマウントする
- 「ホスト」のパスはGCEのインスタンス上のパス
- 「ホスト」に対してファイルなどをアップロードする際、gcloudコマンドの他、GCPコンソールから実行できる
- 「マウント」のパスは、root(/)を指定できない。これはDockerのルール。Dockerfile上で
RUN mkdir ~
でdirを作ってそれを使うか、tmpなどコンテナ既存のdirを使う
また、SSH接続を使って外部IPにアクセスする際、秘密鍵をVMインスタンスで扱うことがあるかと思います。
公開鍵方式でSSH ハンドシェイクのエラーになるときは、接続先の誤りや秘密鍵に問題があります。cat
コマンドで確認して一見問題ないように思えても、秘密鍵を置き換えてみると成功したケースがあったので、秘密鍵の置き換えも視野に入れておいた方がいいかもしれません。