LoginSignup
3
0

More than 1 year has passed since last update.

GCPでDockerを立てるときの流れ

Last updated at Posted at 2021-10-17

#目的
最近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で利用できる。

image.png

そんなわけで、インスタンスは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

###ファイアウォールの設定を変更する

ポート番号を変えたら、ファイアウォールの設定を変えないとそのインスタンスに入れなくなる。
image.png

GCPメニューのVPCネットワークからファイアウォールを選択。それからファイアウォールの設定を新たに作るか、元々あるdefault-allow-sshの設定を変えて接続できるポート番号を変更する。

※ポート22の接続を拒否したい場合は、default-allow-sshからtcp:22を消すか、新たに設定を作って、ポート22を拒否するルールを作る。

####※Dockerのポート番号と連動させる

Dockerに設定としてポート番号が設定されている場合、ファイアウォールの設定をそのポート番号に合わせて追加しておく。デフォルトではdefault-allow-httpで80番が許可されている。

##Dockerを使えるようにする
###Dockerをインストールする
以下のコマンドを実行する。

dockerをインストール
$ sudo apt-get install docker
docker-composeをインストール
$ 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 ディレクトリ名
DockerComposeを行うコマンド
$ 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

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0