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できる。
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント