Linode(格安VPS)でDocker用ホストを準備する手順メモ

Docker

Container Linux(旧称:CoreOS Linux)がいよいよEnd Of Lifeということで、ホストOSを乗り換える必要が出てきました。

後継のFedora CoreOSは、これまでのCoreOSとはいろいろ使い勝手が異なるようですので、現在運用中のサービスにいきなり投入するのはちょっと怖いなと思いまして、Linodeの管理マネージャからワンクリックでインストールできるDebianをベースにしたDocker用イメージを使うことにしました。

これから、複数のサーバの引っ越し作業を行わなくてはなりませんので、作業方法をメモしておこうと思います。

Linodeサーバを作る

例によってVPSはLinodeを利用します。OSを選択する場面では、Distributionsからではなく、Marketplaceから「Docker」を選択します。すると、 Debian9 Debian10 or Debian11にDockerをインストール済みのマシンを立ち上げることができます。

RegionはもちろんTokyoを選択して、CPUやメモリ、ストレージなどは要件に合わせて選択し、rootのパスワードを設定して有効化すれば、あれよという間にVPSが起動します。

ここからはコンソールでの作業になります。
rootユーザとしてログインして作業を開始します。

パッケージを更新する

何はともあれ、まずはお約束のパッケージの更新を行います。

# apt update
# apt upgrade
# apt autoremove

※コピペバージョン
# apt update && apt upgrade && apt autoremove

作業用のユーザを作ります。sudo出来るようにしておきます。

$ adduser <ユーザ名>
$ gpasswd -a <ユーザ名> sudo

忘れないうちにホスト名を指定しておきましょう。忘れるとDocker Swarmでオーケスレーション組んだ時に叱られますので。

hostnamectl set-hostname <ホスト名>
sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'

Docker Swarmで複数Nodeをオーケストレーションさせる場合は、以下の手順でポートを開けておく必要があります。(ハマりポイント)

# マネージャノード
ufw allow 2376/tcp
ufw allow 2377/tcp
ufw allow 7946/tcp
ufw allow 7946/udp
ufw allow 4789/udp
ufw reload
systemctl restart docker

# ワーカーノード
ufw allow 2376/tcp
ufw allow 7946/tcp 
ufw allow 7946/udp 
ufw allow 4789/udp 
ufw reload
systemctl restart docker

※コピペバージョン
# マネージャノード
ufw allow 2376/tcp && ufw allow 2377/tcp && ufw allow 7946/tcp && ufw allow 7946/udp && ufw allow 4789/udp && ufw reload && systemctl restart docker

# ワーカーノード
ufw allow 2376/tcp && ufw allow 7946/tcp && ufw allow 7946/udp && ufw allow 4789/udp && ufw reload && systemctl restart docker

鍵を作る

ここからは作業用のユーザに切り替えて作業を進めます。

まずは何はなくとも鍵を作らないとね。

$ ssh-keygen -t rsa
$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ chmod 700 ~/.ssh
$ rm id_rsa.pub

※コピペバージョン
$ ssh-keygen -t rsa && cd ~/.ssh/ && cat id_rsa.pub >> authorized_keys && chmod 600 authorized_keys && chmod 700 ~/.ssh && rm id_rsa.pub

.ssh内の「id_rsa」をクライアントPCにダウンロードしておきます。

SSHの設定

SSHの設定を行います。rootでのログイン及びパスワードでのログインを禁止します。

$ sudo vi /etc/ssh/sshd_config

- Port 22
+ Port <ポート> # ポートを変更

- PermitRootLogin yes
+ PermitRootLogin no # ルートのログインを禁止

- PubkeyAuthentication no
+ PubkeyAuthentication yes # 公開鍵でログイン

- PasswordAuthentication yes
+ PasswordAuthentication no # パスワードでのログインを禁止

- UsePAM yes
+ usePAM no # PAM認証の禁止


$ sudo systemctl restart ssh

LinodeのDocker用イメージは、ファイヤーウォールの設定も適切に行われているみたい。ポートスキャンを行ってみたけど、きちんと塞がっている。

これでOK。

念のためにDockerのバージョンも確認しておく。

$ docker -v
Docker version 19.03.6, build 369ce74a3c

僕はDocker Swarmを好んで使っているので、Swarmを初期化しておく。

sudo docker swarm init --advertise-addr 《 プライベートIPアドレス 》

Swarmで使用するオーバーレイネットワークも追加しておく。

sudo docker network create --driver overlay 《 ネットワーク名 》

ホストマシンの設定はこれでOK。これで楽しくDockerできる。

コメント

タイトルとURLをコピーしました