目次
ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話
Photon OSと聞いてピンと来た方、流石ですね。
実はVMwareがOSSなLinux ContainerであるPhoton OSというものをリリースしています。
このPhoton OS、vSphereを触ったことがある方ならほぼ触ったことがあるOSなのですがご存じでしょうか。
このPhoton OS、vCenter Server Appliance (vCSA)で利用されてるんです。 vCSAを起動してみると、Photon OSの起動画面を確認することができます。
このPhoton OS、ESXiで使う上では結構最適解なLinux Containerっぽいので紹介してみることにしました。
Photon OSの特徴
Photon OSの特徴は以下の通り。
- vSphere向けにKernelがチューニングされている
- Dockerデーモンが導入済み
- MesosとKubernetesが導入済み
- 効率的なライフサイクルを実装
- セキュアなOS
詳細なデータシートは以下で確認できます。
vSphere (ESXi含め)上でDockerを利用するに当たって、VMwareが直々にチューニングしてくれた物を利用できるというのが結構魅力的。
パッケージ管理はTiny DNF
Photon OSですが、パッケージ管理アプリももちろんプリインストールされています。
採用しているパッケージ管理アプリはVMwareが開発しているTiny DNFを採用している模様。
使って見た感じ基本的にはDNFと同じと思っていて良さそうでした。
Photon OSでDockerを動かすまで
それでは早速Photon OSを導入する手順を紹介していきましょう。
OVAのデプロイ
今回はESXi上で利用するので、上記リンクよりOVAファイルをダウンロードします。
vSphere WEBクライアントで新規仮想マシン作成画面を開き、「OVFファイルまたはOVAファイルから仮想マシンをデプロイ」を選択して「次へ」を押下します。
続いて仮想マシンの名前を入力し、先ほどダウンロードしたOVAファイルを指定して「次へ」を押下します。
続いて導入先のデータストアを指定して「次へ」を押下します。
使用許諾契約書が表示されるので、問題なければ「同意します」を押下し、「次へ」を押下します。
デプロイのオプションを指定する画面が表示されるので、必要に応じて編集し「次へ」を押下します。
VM作るときにOSの種類でPhoton OS選べるのになんでゲストOS名が不明なんだ、という突っ込みたい気持ちを抑えて設定内容を確認し、問題なければ「完了」を押下します。
OVAファイル自体130MB位しかないのでデプロイにかかる時間は非常に短いです。
デプロイが完了すると、上図の通りログインプロンプトが表示されるので、下記IDとパスワードでログインします。
パスワード:changeme
するとパスワードの変更を促されますので、まずCurrent Passwordである「changeme」を入力して押下し、その後新しいパスワードを設定します。
Dockerを動かすまでの準備
以降はShellで粛々とコマンドを実行していきます。
必要なパッケージのインストール
tdnf install kbd tdnf install sudo
まずはTiny DNF(tdnf)を使って必要なパッケージをインストールします。
Photon OSはデプロイするとUSキー配列で設定されているので、JISキーを利用している場合は「kbd」パッケージをインストールします。 USキーを利用している場合は不要です。
そして、sudoはこの後一般ユーザを作成するので必ず導入するようにしてください。
キーマップの設定
localectl set-keymap jp106
上記コマンドを実行すれば下記の通りキーマップがjp106に切り替わります。
root@photon-machine [ ~ ]# localectl System Locale: LANG=en_US.UTF-8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
Static IPの設定
Photon OSは起動時にDHCPでIPアドレスを取得するようになっているので、必要に応じてStatic IPを設定します。
vi /etc/systemd/network/10-static-eth0.network
上記コマンドを実行して設定ファイルを下記の通り記載します。
[Match] Name=eth0 [Network] Address=10.0.20.89 Gateway=10.0.20.254 DNS=10.0.20.254
そして下記コマンドで、10-static-eth0.networkに対してパーミッションを変更します。
chmod 644 10-stati/etc/systemd/network/10-static-eth0.network
続いてDHCPを無効にするため、下記コマンドを実行します。
sed -i -e "s/yes/no/g" /etc/systemd/network/99-dhcp-en.network
ここまで完了したら下記コマンドでネットワーク設定を再読込みします
systemctl restart systemd-networkd
ホスト名の変更
デプロイ後のホスト名は「photon-machine」となっているので、下記コマンドで任意のホスト名に変更します。
hostnamectl set-hostname hoge.local
タイムゾーンの変更
デプロイ後のタイムゾーンはUTCなのでこれをJSTに変更します。
下記コマンドを実行することでタイムゾーンをJSTに指定することができます。
timedatectl set-timezone Asia/Tokyo
一般ユーザの作成
デフォルトではrootアカウントしかないので、今後の運用を考えて一般ユーザを作成します。
また、一般ユーザでDockerを利用できるようにするため、Dockerグループに最初から所属させるようにします。
useraddコマンドでユーザを作成し、passwdコマンドで作成したユーザのパスワードを設定します。
useradd -m -g docker -G wheel hogehoge passwd hogehoge
rootのSSH接続を禁止する
デフォルトではrootアカウントでもSSH接続できるので、下記コマンドを実行してsshdの設定ファイルを開き、
vi /etc/ssh/sshd_config
PermitRootLoginの値を「no」に指定して保存します。
その後下記コマンドを実行してsshdを再起動すれば設定完了です。
systemctl restart sshd
Dockerを利用する
デフォルトではDockerの自動起動がオフとなっているので、先ほど作成した一般ユーザでSSH接続して下記コマンドを実行します。
sudo systemctl enable docker sudo systemctl start docker
最後に下記コマンドを実行してDockerが動作するか確認します。
docker run hello-world
以下のようにhello-worldが実行されれば導入完了です。
syobon@photon-machine [ ~ ]$ docker run hello-workld Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID:For more examples and ideas, visit:Welcome to the world's largest container registry built for developers and …hub.docker.comsyobon@photon-machine [ ~ ]$
まとめ
かなり簡単にDockerやk8sが動く小さなコンテナを構築できてかつ、VMwareが施したvSphere向けのチューニングを享受できるPhoton OS、選択肢としては十分アリなのではないでしょうか。
やっとこさ自宅ラボにもコンテナテスト環境を構築することができたので色々とやってみます。
作成されるVMも1vCPUのメモリ2GB、ストレージ16GBとかなり小さいので、自宅ESXiラボでも十分利用可能です!
弊サークル作成の「6万円ちょいではじめる ESXiホームラボ」を見ながらThinkCentre M715q Tinyまたは、ThinkCentre M75q-1 Tinyで構築したESXiサーバ上でもキチンと動くので、これを機会に小さなテストラボを作ってみると良いかも知れませんね。
NIC 2個付いたESXiサーバが欲しいんだ!と言う方であればRyzen Embeddedが搭載された4X4 BOXシリーズを使うのも手。
ドライバの組み込みなどは先ほど紹介した同人誌通りに進めればOKです(Realtek NICなので)
初期投資をもう少し安くしたいのであればPentium Silver J5005を搭載したNUC7PJYHもおすすめ。 こちらも弊サークル同人誌通りに進めれば導入可能です。