ESXi上でDockerを稼動させるために、Photon OSをESXi上に導入します。
Photon OSとは #
Photon OSはVMwareのインフラに最適されたオープンソースのLinuxコンテナホストであり、以下のような特徴があります。
- VMware hypervisor向けに最適化
- コンテナのサポート
- tdnfによるパッケージ管理
- セキュリティ強化
Photon OSのダウンロード #
ESXi上にインストールしますので、ダウンロード対象としてOVAファイルかISOファイルの選択肢があります。
Photon OSのOVA、ISOは以下の特徴がありますので、今回はESXi環境向けにチューニングされたOVAファイルをダウンロードします。
- OVAインポート: プリインストールされたPhotonOSを取得する。OVAはESXiで簡単にインポートでき、ESXi環境向けにカーネルチューニングがされている。プリインストールされていないパッケージはtdnfを使用してインストールする。
- ISOインストール:通常のlinuxのインストール方法と同様。
以下のリンクからOVAファイルをダウンロードします。 今回は、 OVA-hw13_uefiを選択します。 Downloading Photon OS · vmware/photon Wiki · GitHub
Photon OSのインストール #
ESXiのWebUIから新規仮想マシン画面を開いて、「OVFファイルまたはOVAファイルから仮想マシンをデプロイ」を選択して、インストールを進めます。
Photon OSへの初回ログイン #
OVAでインストールしましたので、rootのパスワードが指定されています。初回ログイン時にパスワード変更が促されますので、適宜変更します。 初回ログインのデフォルト設定は以下の通りです。
設定 | 値 |
---|---|
ユーザ名 | root |
パスワード | changeme |
Photon OSの初期設定 #
必要なパッケージのインストール #
以下のコマンドで、less
、sudo
をインストールします。
tdnf install less sudo
IPアドレスの固定 #
Photon OSでは、systemd-netowrkdでネットワーク設定がされています。 以下のコマンドでNICのデバイス名を確認します。ここでは、eth0がNICのデバイス名にあたります。
networkctl list
<以下出力例>
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eth0 ether routable configured
/etc/systemd/network/00-static.network
というファイルを作成して、以下のように編集します。
[Match]
Name=eth0
[Address]
Address=192.168.10.11/24
[Network]
DNS=192.168.10.254
[Route]
Gateway=192.168.10.254
上記は、例としてIPアドレスを192.168.10.11、DNSを192.168.10.254、Gatewayを192.168.10.254とします。
ネットワーク設定ファイルのパラメータは多数ありますが、以下を設定しておけばとりあえず利用できますので、適宜自分のネットワーク環境に合わせて設定します。
パラメータ | 内容 |
---|---|
Name | 設定したいNICのデバイス名 |
Address | サーバのIPアドレス |
DNS | サーバが参照するDNSのIPアドレス |
Gatewary | デフォルトゲートウェイ |
以下のコマンドで/etc/systemd/network/00-static.network
のアクセス権限を変更します。
chmod 644 /etc/systemd/network/00-static.network
デフォルトでDHCPが有効になっていますので、以下コマンドでDHCPを無効化します。
sed -i -e "s/yes/no/g" /etc/systemd/network/99-dhcp-en.network
以下のコマンドでサービスを再起動して、ネットワーク設定ファイルの設定を有効化します。
systemctl restart systemd-networkd.service
以下のコマンドでIPアドレス情報を確認して、設定したIPアドレスになっていればIPアドレスの固定が完了です。
ip a
timezoneの設定 #
以下のコマンドを実行してtimezoneを日本に設定します。
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hostnameの設定 #
以下のコマンドを実行してhostname
を設定します。以下の【ホストネーム】は設定したいhostnameに適宜変更します。
echo 【ホストネーム】 > /etc/hostname
一般ユーザの作成 #
以下のコマンドを実行して、一般ユーザを作成します。【ユーザ名】は作成したいユーザ名にします。
useradd -m -G wheel 【ユーザ名】
以下のコマンドを実行して、一般ユーザのパスワードを設定します。
passwd 【ユーザ名】
今回作成したユーザはwheelグループに追加していますので、sudo
が利用できる。これからは管理者権限が必要な作業は、rootアカウントで実施せずにsudo
コマンドを利用して一般ユーザから実施します。
rootからログアウトして、sshを使って一般ユーザでログインします。
Firewallの穴空け #
iptablesがデフォルトで有効になっており、iptablesのデフォルト設定は/etc/systemd/scripts/ip4save
に記載されています。
外部からの接続は、デフォルトではsshの22番ポートしか許可されていません。
適宜、/etc/systemd/scripts/ip4save
に以下のように追記して必要なポートを空けます。
## 【ポート番号】は空けたいポート番号
-A INPUT -p tcp -m tcp --dport 【ポート番号】 -j ACCEPT
編集が完了しましたら、以下のコマンドでiptablesのサービスを再起動します。
sudo systemctrl restart iptables
sshの設定 #
sshはデフォルトで有効になっていますが、よりセキュリティを高めます。
まず、rootのssh接続を無効化します。
/etc/ssh/sshd_config
にてPermitRootLogin
の値をno
に変更する。なお、PermitRootLogin
の設定が2箇所(1つはコメント)あるので、気をつける。
# PermitRootLogin yes
PermitRootLogin no
次にsshのデフォルトポート番号を変更します。 、上述のiptablesの設定で事前に変更するポート番号の外部からの接続を許可しておく必要があります。
ポート番号の変更は、/etc/ssh/sshd_config
にて以下のように変更します。
# Port 22
Port 50134
rootでのssh接続拒否とポート番号変更を反映するために、以下のコマンドでsshサービスを再起動します。
sudo systemctl restart sshd
また、パスワードでのsshログインが有効な状態なので、sshの鍵認証設定の記事を参考に鍵認証に変更します。
ディスク容量の拡張 #
OVAからインポートしましたので、ストレージサイズが16GBになっています。しかし、場合によっては16GB以上が必要になる場合もありますので、拡張します。 割り当てcpu数やメモリはESXiのWebUI上から簡単に変更できますが、ストレージサイズの変更は少し手間がかかります。
まず、仮想OSを停止して、ESXiのWebUIからストレージの割り当てを増やして、仮想OSを起動します(今回は32GBに変更)。
また、このままではPhoton OSを上で拡張した分のストレージ容量を認識できません。 認識させるためには、パーテーションの変更を行います。
まず、パーテーション変更のために、parted
をインストールします。
sudo tdnf install parted
partedコマンドを実行します。
sudo parted
以下のコマンドでディスクの状況を確認します。
print free
<以下出力例>
print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 17.2GB
Sector size (logical/physical): 512B/5
Partition Table: gpt
Disk Flags:
Number Start End Size File s
17.4kB 1049kB 1031kB Free S
1 1049kB 11.5MB 10.5MB fat16
2 11.5MB 17.2GB 17.2GB ext4
今回は2番の領域をリサイズします。
以下のコマンドでリサイズします。
コマンド実行後に続行するか聞かれますので、Yes
を入力し、終わりの容量を聞かれるので、100%
を押下します。
resizepart 2
<以下出力例>
resizepart 2
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? Yes
Yes
End? [17.2GB]? 100%
再度、ディスクの状況を確認します。
print free
<以下出力例>
print free
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 11.5MB 10.5MB fat16 boot, esp
2 11.5MB 34.4GB 34.3GB ext4
リサイズに成功していれば、quit
でpartedを終了します。
次に以下のコマンドでext4のファイルシステムを拡張します。
sudo resize2fs /dev/sda2
以下コマンドでファイルシステムが拡張されていることを確認します(今回は32GB)。
df -h
<以下出力例>
Filesystem Size Used Avail Use% Mounted on
/dev/root 32G 601M 30G 2% /
devtmpfs 998M 0 998M 0% /dev
tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs 1000M 516K 999M 1% /run
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
tmpfs 1000M 0 1000M 0% /tmp
/dev/sda1 10M 2.2M 7.9M 22% /boot/efi
tmpfs 200M 0 200M 0% /run/user/1000
Dockerの起動設定 #
以下のコマンドでDockerサービスの起動し、自動起動を有効します。
sudo systemctl enable docker
sudo systemctl start docker
以下のコマンドでDockerが正常に稼動することを確認します。
# Hello from Docker!が出力される
sudo docker run --rm hello-world
# docker imagesの削除
sudo docker rmi hello-world
Docker Composeのインストール #
以下のリンクを参考に、Docker Composeをインストールします。
Install Docker Compose | Docker Documentation
Docker Composeの安定リリースをダウンロードします。
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Docker Composeに実行権限を付与します。
sudo chmod 755 /usr/local/bin/docker-compose
上記の手順でPhoton OSでDocker及びDocker Composeが利用できるようになります。