本サイトはサイト運営費捻出のため、アフィリエイト広告を利用しています。*詳細
ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

2020年1月27日
スポンサーリンク

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

Photon OSと聞いてピンと来た方、流石ですね。

実はVMwareがOSSなLinux ContainerであるPhoton OSというものをリリースしています。

このPhoton OS、vSphereを触ったことがある方ならほぼ触ったことがあるOSなのですがご存じでしょうか。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton 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ファイルをダウンロードします。

今回はESXi 6.7上に導入するので「OVA with virtual hardware v13 (UEFI Secure Boot)」をダウンロードしました。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

vSphere WEBクライアントで新規仮想マシン作成画面を開き、「OVFファイルまたはOVAファイルから仮想マシンをデプロイ」を選択して「次へ」を押下します。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

続いて仮想マシンの名前を入力し、先ほどダウンロードしたOVAファイルを指定して「次へ」を押下します。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

続いて導入先のデータストアを指定して「次へ」を押下します。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

使用許諾契約書が表示されるので、問題なければ「同意します」を押下し、「次へ」を押下します。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

デプロイのオプションを指定する画面が表示されるので、必要に応じて編集し「次へ」を押下します。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

VM作るときにOSの種類でPhoton OS選べるのになんでゲストOS名が不明なんだ、という突っ込みたい気持ちを抑えて設定内容を確認し、問題なければ「完了」を押下します。

OVAファイル自体130MB位しかないのでデプロイにかかる時間は非常に短いです。

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

デプロイが完了すると、上図の通りログインプロンプトが表示されるので、下記IDとパスワードでログインします。

ID:root
パスワード:changeme

ESXi上で気軽にDockerを動かすならVMware謹製のPhoton OSを選ぶと良い、というお話

するとパスワードの変更を促されますので、まず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

上記コマンドを実行して設定ファイルを下記の通り記載します。

例ではIPアドレスが10.0.20.89、デフォルトゲートウェイが10.0.20.254、DNSサーバが10.0.20.254としています。
[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
以降からはSSH経由で設定して問題ありません。

ホスト名の変更

デプロイ後のホスト名は「photon-machine」となっているので、下記コマンドで任意のホスト名に変更します。

hostnamectl set-hostname hoge.local
上記コマンド結果は即時反映されますが、ログインプロンプトのホスト名は再度セッションを開くことで反映されるようになります。

タイムゾーンの変更

デプロイ後のタイムゾーンはUTCなのでこれをJSTに変更します。

Photon OSはデフォルトでGoogleのNTPサーバと同期するようになっています。

下記コマンドを実行することでタイムゾーンを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:
 		
Welcome to the world's largest container registry built for developers and …
hub.docker.com
For more examples and ideas, visit:
Get started with Docker
docs.docker.com
syobon@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もおすすめ。 こちらも弊サークル同人誌通りに進めれば導入可能です。