社内PCからGCPのdockerコンテナ環境へSSH接続する


昨今の「社内PC」は管理者権限が与えられておらず、「ブラウザ」、「メール」、「Office」の3つだけという環境が標準だったりします。ダディ伯爵の貸与されている社内PCも同様で、プロキシサーバによるサイト閲覧制限のおまけつき。
そのような制限が厳しくなった「社内PC」からでも、おうちからでも、お手軽に操作できる検証環境(dockerコンテナ環境)を簡単に作ることが出来ましたのでご紹介いたします。

注意まず初めに、誤解のないように書いておきますが、勤務時間中に業務外のことをするのが目的ではなく、インフラエンジニアとしての技術検証、コマンド確認、設定確認などをするのが目的です。 社内PCから業務外のことをして懲戒解雇されることのないよう、くれぐれもご注意ください。懲戒解雇されても、ダディ伯爵は一切の責任を負いませんので、悪しからず。 以下の記事を社内PCから実践する場合は、ご自身の責任の下で実施ください。

1.Google Cloud Platform(GCP)でのdockerコンテナ環境の利用について

GCPでdockerコンテナ環境を利用する場合、以下の2パターンになるかと思います。
(1)「Google Compute Engine(GCE)」で「Container-Optimized OS」を使う LINK
(2)「Google Kubernetes Engine(GKE)」を使う LINK

2.Google Container Registry(GCR)の利用について

GCPでdockerコンテナ環境を利用する場合、イメージの保管場所は「Google Container Registry」を利用しましょう。

  • 安全な非公開 Docker レジストリ
  • 自動的にビルド、デプロイ
  • 徹底的な脆弱性スキャン
  • リスクのあるイメージをロックダウン
  • ネイティブ Docker サポート
  • 高速で可用性の高いアクセス

と良いことづくめのサービスなので利用しないのはもったいないです。
利用方法等は「「Container-Optimized OS」から「Google Container Registry(GCR)」へコンテナイメージをpushする方法」にまとめていますのでご確認ください。

3.ブラウザからSSH接続する方法について

それでは、本題に入ります。
上記の「(1)「Google Compute Engine(GCE)」で「Container-Optimized OS」を使う」パターンで話を進めます。

Google Cloud Platform(GCP)のCompute Engineで「Container-Optimized OS」イメージでインスタンスを作成すると「SSH」接続ボタンが出てくるので、そのボタンをクリックするだけでSSH接続が出来ます。非常に簡単です。これだけです。
TeraTerm等のフリーソフトも要らず、ブラウザだけでSSH接続が出来ます。便利な世の中になりました。はい。

ワンポイントもし、Gmailアクセスが禁止されているようなケース(=Googleアカウント認証画面がブロックされているケース)の場合は、別記事「[社内PCからRDP接続するために中継サーバ(Guacamole)をdockerコンテナで立ててみた](/gcp/Guacamole/)」を試してみてください。

4.「Container-Optimized OS」で使えるdockerコマンドについて

「Container-Optimized OS」は標準でdockerコマンドが使えます。インスタンス起動後にdockerコンテナ環境をすぐに使えるのでとてもオススメです。
dockerコマンドは、一度実行すれば覚えれるほどシンプルだと思います。

(1)基本コマンド
 「docker images」コマンドでイメージがローカル環境にあるかどうか確認します。デフォルトではイメージは0個です。
 「docker search」コマンドで「docker hub」からイメージを検索します。
 「docker pull」 コマンドで「docker hub」からイメージをダウンロードします。

(2)コンテナが1個の場合
 「docker run」コマンドでコンテナ作成、起動します。
 「docker commit」コマンドでカスタマイズしたコンテナからイメージを作成します。

 「docker ps」コマンドで起動しているコンテナを確認できます。
 「docker ps -a」コマンドで停止しているコンテナも含めコンテナ一覧を確認できます。

 「docker start」コマンドでコンテナの起動が行えます。
 「docker stop」コマンドでコンテナの停止が行えます。
 「docker restart」でコンテナ再起動が行えます。

 「docker logs」コマンドでログ確認が行えます。

 「docker rm」コマンドでコンテナ削除が行えます。
 「docker rmi」コマンドでイメージ削除が行えます。

(3)コンテナが複数の場合
 「docker-compose.yml」を作成します。

 「docker-compose.yml」があるディレクトリで「docker-compose up -d」コマンドで複数コンテナを起動します。
 「docker-compose.yml」があるディレクトリで「docker-compose down」コマンドで複数コンテナを停止します。
 「docker-compose.yml」があるディレクトリで「docker-compose ps」コマンドで起動しているコンテナを確認します。
 「docker-compose.yml」があるディレクトリで「docker-compose logs」コマンドでログ確認します。

(4)コンテナへログインする場合
 「docker exec -ti コンテナID /bin/bash」コマンドでログインします。
 ホストOSからmysqlコンテナへmysql接続したい場合は「docker exec -it コンテナID mysql -u root -p」コマンドというようになります。

5.「Container-Optimized OS」で「docker-compose」を使う手順

以下の手順を1回実行するだけで「docker-compose」を使えるようになります。

参考URL:https://cloud.google.com/community/tutorials/docker-compose-on-container-optimized-os

docker run docker/compose:1.24.0 version

echo alias docker-compose="'"'docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v "$PWD:$PWD" \
    -w="$PWD" \
    docker/compose:1.24.0'"'" >> ~/.bashrc

source ~/.bashrc

今回の記事で紹介したコマンドだけで一通りのことができると思います。
それぞれのコマンドのオプションに「–help」を付ければ、実行したいコマンドのオプションを確認できます。
ダディ伯爵も食わず嫌いで「dockerコンテナ」を敬遠していましたが、いざ触ってみるととてもシンプルかつ簡単なので「dockerコンテナ」の虜になりそうです。
GAE無料枠を利用して個人ブログを始める手順について、以下の参考記事にまとめていますので試してみたい方はご確認ください。


 Previous
Google Cloud Platform(GCP)イベント「Cloud OnBoard」に参加してみた Google Cloud Platform(GCP)イベント「Cloud OnBoard」に参加してみた
先日「Google Cloud Platform トレーニング イベント | Cloud OnBoard - 大阪 スペシャルバージョン 6 月 4 日(火)開催」というイベントに参加してきました。イベントのおさらいがてら頭の中を整理するた
2019年06月05日
Next 
GAEの「無料ドメイン」と「無料SSL証明書」がとても便利♪ GAEの「無料ドメイン」と「無料SSL証明書」がとても便利♪
Google Cloud Platform(GCP)のPaaSであるGoogle App Engine(GAE)の「無料ドメイン」と「無料SSL証明書」について紹介します。 カテゴリ:GCP入門合わせて読みたい GCPのAlways
2019年06月02日
  TOC