#目的
最近GCP(Google cloud Platform)にインスタンスを立てるのを失敗しまくっていて、何回もやり直しているので手順をまとめておきたい。初めてGCPをする人も追走しやすいように書く。
※ここではcontainer optimized OSは使用していない。理由はSSH接続のポート番号の変更の仕方がどうしてもわからないから(原因はOSログインをその時使っていたからかもしれない。いまだにOSログインの仕組みがよくわかっていない)。
なお、初めてなら以下の記事は参考になるのでチェックしてみてほしい。
#構造
1.GCPにインスタンスを立てたらまずすること
-インスタンスの設定(すでに作っている人は省略可)
-SSH鍵を作る
-SSH接続するポート番号を変更
-ファイアウォールの設定を変更する
2.Dockerを使えるようにする
-Dockerをインストールする
-container optimizedを使用している場合
-Docker利用のtips(GCEとは特に関係ない)
#GCPにインスタンスを立てたらまずすること
##インスタンスの設定(すでに作っている人は省略可)
GCPのGoogle Compute EngineにてVMインスタンスを作成する。
インスタンスの無料枠は2021年10月現在、E2-micro、30GB、リージョンは米国の一部となっている。この無料枠はお試し期間が終わってもAlways Freeで利用できる。
そんなわけで、インスタンスはE2-micro、30GB、リージョンは日本に一番近いらしいオレゴン、OSは標準で選択されていたDebianを使用する。
##SSH鍵を作る
SSH鍵を生成する。
$ ssh-keygen -t rsa
このコマンドを実行した後に三回質問されることになる。一回目はユーザー名を何にするか、二回目は鍵のパスフレーズの設定、三回目は二回目で設定したパスフレーズの確認(二回目と三回目の入力内容が異なるともう一度尋ねられる)。全部Enterを押したらスキップできる。
鍵の名前は指定しなければ、id_rsaになる。
※すでにid_rsaが存在していた場合は上書きされるので注意。
鍵を生成するときにオプションで鍵の名前も付けていると、一回目の質問はない。
次に公開鍵を表示する。
$ cat ~/.ssh/id_rsa.pub
表示された公開鍵はCtr+Cでコピペしてインスタンスの編集画面から貼り付けておく(画面下部のほうに入力画面がある)。
※ターミナルで改行されている部分はそのまま改行されたままなので、貼り付けた後は改行をきちんと消しておこう。
最後に、秘密鍵を読み取り専用にする。
$ chmod 400 ~/.ssh/id_rsa
###SSH接続するポート番号を変更
標準の設定(ポート22)のままだと不正アタックの標的にされる。無料枠で使いたいならそれこそ番号の変更は必要。
以下のコマンドを実行して設定をバックアップする。
$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
以下のコマンドを実行して、ポート番号を変更する。
$ sudo sed -i -e "s/#Port 22/Port 変更したいポート番号/g" /etc/ssh/sshd_config
あるいは以下の方法でもいい。
まずSSH設定ファイルにアクセスする。
$ sudo vi /etc/ssh/sshd_config
Port 任意のポート番号
標準ではおそらく、#Port 22 のような表記となっている。#はコメントアウトの意味なので、その下あたりに自分の作りたいポート番号を書いておくと分かりやすい。
ちなみに、ここではエディタの一種であるvimを使っている。そのため、初めてvimを見る人はvimの操作方法についてググるといい。
設定を読み込むためにSSHサービスを再起動する。
$ sudo systemctl restart sshd.service
###ファイアウォールの設定を変更する
ポート番号を変えたら、ファイアウォールの設定を変えないとそのインスタンスに入れなくなる。
GCPメニューのVPCネットワークからファイアウォールを選択。それからファイアウォールの設定を新たに作るか、元々あるdefault-allow-sshの設定を変えて接続できるポート番号を変更する。
※ポート22の接続を拒否したい場合は、default-allow-sshからtcp:22を消すか、新たに設定を作って、ポート22を拒否するルールを作る。
####※Dockerのポート番号と連動させる
Dockerに設定としてポート番号が設定されている場合、ファイアウォールの設定をそのポート番号に合わせて追加しておく。デフォルトではdefault-allow-httpで80番が許可されている。
##Dockerを使えるようにする
###Dockerをインストールする
以下のコマンドを実行する。
$ sudo apt-get install docker
$ sudo apt-get install docker-compose
後は、任意のコンテナを立てたいディレクトリに移動してdocker-compose up -dする。
$ cd ディレクトリ名
$ docker-compose up -d
####container optimizedを使用している場合
container optimizedは最初からDockerがインストールされている。ただし、docker composeはインストールされていないので、コマンドを実行する必要がある。
$ docker run docker/compose:1.29.2 version
1.29.2は現在でのバージョン。最新版を手に入れるにはDockerのサイトからタグを入手する。
任意のディレクトリに移動して、Docker-composeを行う。docker-compose up -d は使うことができないのに注意する。
$ cd ディレクトリ名
$ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:/rootfs/$PWD" \
-w="/rootfs/$PWD" \
docker/compose:1.29.2 up
こんなコマンドいちいち打つのは嫌だ。docker-compose up -dでやりたいよ、という人はこちらの記事を参考に設定してください。
##Docker利用のtips(GCEとは特に関係ない)
GCEとは特に関係ないが、覚えておくと便利なコマンドをまとめておく。
Dockerの中に入って作業を行うときのコマンド。このコマンドを使うことによって、中身のファイルを実行することができる状態になる。
$ docker exec -it コンテナ名 /bin/bash
コンテナ名を度忘れした場合は、
$ docker container ls
でコンテナの一覧を入手できる。
##参考資料
https://qiita.com/na59ri/items/c540d9d16a1fc1c5a9c4