さくらVPSの契約とDocker導入

今回は、これまでの記事とは少し違ってインフラ系の話題を書きます。
これまでは、さくらインターネット社の”レンタルサーバー”を契約してブログ運営していたのですが、仕事の幅を広げるため5月連休中に”さくらVPS”を契約してもう少し自由にプログラム作成や地図データ配信環境を構築しようと思い作業を進めます。

本日の作業

本日は、以下の作業を行います。

  • さくらVPSの契約
  • ポートの設定
  • ユーザーの作成
  • Dockerのインストール
  • Docker-composeのインストール

さくらVPSの契約

VPSとは、Virtual Private Serverの略で、VMWareなどにより構築した仮想サーバーを借りるサービスです。
このサービスは、レンタルサーバーとは違ってrootユーザーが使えますので、Dockerなどのプロダクトを自由に導入・運用できる点がメリットです。デメリットとしては、サーバー運用の知識がある程度必要という点です。ただ、これはコツコツ勉強しながら慣れればよいと思います。

前置きはこのくらいにして、早速さくらVPSの契約です。プランは7つあり最も安いもので月額585円(税抜き)からです。

さくらVPSのプラン(2020.4.30時点) https://vps.sakura.ad.jp/

私はとりあえず、1GプランにSSDを増設しました。スペックは以下の通りです。

  • CPU:仮想2Core
  • メモリ:1GB
  • SSD:100GB

初回のみ1,000円の追加費用が必要ですが、上記で月額800円(税抜き)です。
また、2週間の無料期間があり、年払いにすると1か月分(800円)安くなります。

ホームページをクリックしてカード決済を済ませるまで5分程度です。
そして、そこから数分後には、専用のIPアドレスが設定されたサーバーが利用できます。

ポートの設定

専用サーバーを運用するときに最も心配なのは、セキュリティ面だと思います。
攻撃者からサーバーを守るのに有効な手段は、ファイアウォールと呼ばれる通信ポートを塞ぐなどするソフトを導入することです。これはOS付属のものが使えますが、設定や運用に知識が必要なことから面倒な印象があります。
さくらVPSでは、サーバーの外側の仮想スイッチでパケットのフィルタが可能です。

さくらVPSのパケットフィルタのイメージ
https://vps-news.sakura.ad.jp/vps-pf/

パケットフィルタの設定画面は以下のようになっており、簡単にポートを塞いで外部の攻撃からサーバーを守ることができます。

サーバーコントロールパネルのパケットフィルタ設定画面

OS再インストール

デフォルトのOSは、CentOS7でしたので、CentOS8に変更しました。
この作業も、サーバーのコントロールパネルからOSを選択して3分程度待つだけでした。

コントロールパネルから再インストールするOSを選択

ユーザーの作成

OS再インストール後は、rootでログインできます。
rootで使い続けるのはあまり美しくないので、運用用のユーザーを作成します。
TeraTermなどから以下のように行います。

#useradd -m hoge
#passwd hoge
#usermod -G wheel hoge
#su – hoge
$ groups
hoge wheel

ユーザー”hoge”では、sudoコマンド(単発でroot権限でのコマンド発行を行う)も使おうと思いますので、グループ”wheel”にも参加させます。

Dockerのインストール

次は、Docker(docker-ce)のインストールです。以下を参考に作業しました。

ほぼ、上記ページの通りに作業しました。
コマンドだけを書いてしまうと、以下の通りです。(先頭の数字は解説用に振ったものです。)

1.#yum install -y yum-utils device-mapper-persistent-data lvm2
2.#yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.#yum makecache
4.#yum list docker-ce.x86_64 –showduplicates | sort -r
5.#yum install docker-ce-18.03.1.ce-1.el7.centos

作業はすべてrootユーザーで行いました。
1.Dockerの前提プロダクト(デバイスマッパー)のインストールです。
2.yum(実際はdnfというコマンドのようです)のリポジトリ(ダウンロード先)の追加です。
3.念のために行うようですが、パッケージインデックスの更新とのことです。
4.インストール可能なdocker-ceパッケージの一覧を表示します。なお、Dockerには商用のEE(有償)とコミュニティ版のCE(無償)があります。
5.CentOSと書かれたバージョンで最も新しいのが”18.03.1.ce-1.el7.centos”でした(先頭2桁の数字は西暦の下2桁のようです)ので、これを導入します。長々とメッセージが表示されますが、2分程度で終了します。最後に”Complete!”が表示されれば、インストールは成功です。

引き続き、動作確認と設定です。

6.#systemctl start docker
7.#docker –version
Docker version 18.03.1-ce, build 9ee9f40
8.#docker run hello-world
9.#cat /etc/group
docker:x:989:
10.#usermod -aG docker hoge
11.#systemctl enable docker

6.Dockerのデーモンを起動します。
7.バージョン確認です。
8.”Hello World”イメージを起動します。Docker同梱の”hello-world”のメージからコンテナを作成し起動します。メッセージ”Hello from Docker!”が表示されればOKです。
9.念のためグループに”docker”が追加されていることを確認します。
10.dockerグループに、運用ユーザーの”hoge”を追加します。これにより、”hoge”からDocker関連のコマンドを実行することができるようになります。(運用上賛否両論があります。)
11.OSブート時にdockerデーモンを起動するようにします。

以上、作業時間は調べながら1時間程度だったと思います。

Docker-composeのインストール

本日の最後の作業です。
コンテナ1つだけの運用であれば、Dockerだけで問題ありませんが、複数のコンテナを同時に起動するときには、Docker-composeが便利(実質的に必須)ですので、インストールします。

Docker-composeは、Git-Hubからダウンロードしますが、作業の前に以下のサイトでバージョンを確認します。
https://github.com/docker/compose/releases

サイトを確認すると、2020.4.30時点の最新版は”1.26.0-rc4”です。ただ、バージョン名に”rc”がついていて、リリース候補版(Release Candidate)のようですので、1つ前の”1.25.0”をインストールしました。

Docker-composeのGit-Hubのホームページ

作業手順は以下のようになります。こちらもすべてrootで作業します。

1.#curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-\`uname -s\`-\`uname -m\` -o /usr/local/bin/docker-compose
2.#chmod +x /usr/local/bin/docker-compose
3.#docker-compose –version
 docker-compose version 1.25.5, build 8a1c60f6

1.curlコマンドでGit-Hubから物件をダウンロードします。(”\`”は、’(バッククオート)に読み替えてください)
2.ダウンロードしたdocker-composeに実行権限を付与します。
3.バージョンを確認します。

まとめ

今回は、以下を学習(?)しました。

  • さくらVPSの契約
  • サーバーの環境設定
  • Dockerのインストール
  • Docker-composeのインストール

ここまで、調べながら3時間程度の作業だったと思います。
正直、これだけで連休の大半を使ってしまうかと思っていたので、短時間で済んで大変満足しています。
やはり、自動化というかサービスの標準化というかが進んでいて大変楽にサーバーが開設できることがわかりました。
ユーザーは環境周りに苦労せず、本来やりたいアプリケーションやサービス構築に集中できると感じました。

以下の記事では、Dockerの基本操作を解説していますので、参考にしてください。

前の記事

SpatiaLiteの導入