やもりの技術ブログ

日々の生活で行った技術的な活動や日頃感じたことを書きます。

【Cockpit】CentOS上でWebUIからコンテナと仮想マシン両方の管理を行う(Docker Container/KVM)

f:id:yamori-tech:20210923131252p:plain

こんにちは、yamori(yamori-tech)です。

我が家では今までVMwareのesxiで仮想サーバを作ってその上でDNSサーバやアプリケーションを動作させていました。

仮想マシンだとサーバを作り直すときに時間がかかることがあり、管理コストの低いContainer環境を使いたいと思い始め、このたび環境整備を行いました。

Dockerコンテナの管理がWebUIから行えることも利点ですが、VMwareからの移行も見据え、KVM仮想マシンの管理にも利用できそうなCockpitを導入することにしています。

環境情報
OS: CentOS7.9 (VMware esxi上の仮想マシン)
4vCPU / 4096MB Memory / 128GB Disk

Cockpitとは

Cockpitとは、Web UIを利用してサーバの設定変更、サーバ上で稼働しているコンテナや仮想マシンを起動・停止・リソース状況のチェックなどを行えるソフトです。

RHEL8のドキュメントでもWebコンソールからのシステム管理にはCockpitを利用したドキュメントが整備されています。

Cockpitのインストールと起動

今回はDockerとKVM両方管理できる環境を試したかったため、以下のセットアップとなります。

# Cockpitのインストール
$ sudo yum install cockpit -y 

# Cockpit-Dockerのインストール
$ sudo yum install cockpit-docker -y

# Cockpit-Machinesのインストール
$ sudo yum install cockpit-machines virt-install -y

# KVMで仮想マシンを作成するために必要なパッケージ群のインストール
$ sudo yum install libguestfs libvirt libvirt-client python-virtinst qemu-kvm virt-manager virt-top virt-viewer virt-who virt-install bridge-utils -y

# 起動と自動起動の設定
$ sudo systemctl enable --now docker
$ sudo systemctl enable --now libvirtd
$ sudo systemctl enable --now cockpit.socket

CockpitとDocker,KVMの動作確認

WebUIへのログイン

https://<インストールしたホストのIPまたは解決可能なDNS名>:9090 にアクセスすると、ログイン画面が確認できます。

OSのログインパスワードでログインできます。

例: User name: root, Password: <rootユーザのパスワード>

f:id:yamori-tech:20210923135005p:plain

ログインすると、Cockpitをインストールしたマシンの情報が表示されます。

我が家ではVMwareでCentOS7での稼働なのでそのような表示になっています。

DockerとMachinesをインストールした為、左のバーにはContainersとVirtual Machinesのメニューが存在します。

それぞれからContainerの管理と仮想マシンの管理が可能です。

f:id:yamori-tech:20210923135545p:plain

Containerの起動とステータスの確認

試しにContainerを起動させてWebUI上で確認できるか見てみます。

# Docker Imageの取得 (CentOS 7)
$ sudo docker image pull centos:7

# Imageの確認
$ sudo docker images

# Containerの起動
$ sudo docker run -itd centos:7 /bin/sh

# Containerの稼働を確認
$ sudo docker ps
CONTAINER ID    IMAGE       COMMAND         CREATED             STATUS          PORTS   NAMES
48ddc3a6f37c    centos:7    "/bin/sh"       13 seconds ago      Up 12 seconds           cranky_tesla

WebUIから見てみると、先程起動したコンテナが表示されていることがわかります。

DNSサーバとmydnsのIPアドレスを送信するCronのためのコンテナもうごいてます、これはまた別の記事で紹介します)

f:id:yamori-tech:20210923140810p:plain

コンテナ名をクリックすると、対象のコンテナの詳細情報と起動時にしたプロセスの標準出力が確認できます。

今回は標準出力を確認できるようにするため、echoをループするコンテナを起動しています。

f:id:yamori-tech:20210923141956p:plain

WebUIからイメージをダウンロードしたり、起動したりすることもできます。

KVM仮想マシンの起動とステータスの確認

KVM仮想マシンを起動していきます。

まずはCentOS7のイメージを準備し、Cockpitをインストールしたサーバ内に配置します。

今回は自分で自動インストールの処理を入れたisoファイルを用意しているので、それを配置します。

# qemu用Directoryの作成
$ sudo mkdir /var/qemu
$ sudo chown qemu:qemu /var/qemu

# 用意しておいたCentOS7のメディアを配置
$ sudo mv /root/CentOS-7-x86_64-Minimal-2009_Auto.iso /var/qemu
$ sudo chown qemu:qemu /var/qemu/CentOS-7-x86_64-Minimal-2009_Auto.iso

# こんな感じになっていればOK
$ ls -lah /var/qemu
合計 1.1G
drwxr-xr-x   2 qemu qemu   51  923 14:33 .
drwxr-xr-x. 21 root root 4.0K  923 14:33 ..
-rwx------   1 qemu qemu 1.1G  923 14:24 CentOS-7-x86_64-Minimal-2009_Auto.iso

Virtual Machinesタブを開き、右上のCreate VMボタンからVMを作成します。

メディアはLocal Install Mediaを選択し、先程配置したCentOS7のメディアファイルを選択します。

f:id:yamori-tech:20210923144644p:plain

VMを起動すると、VNCから出力を確認することができます。

VNC経由でOSのセットアップを行います。

f:id:yamori-tech:20210923144843p:plain

セットアップ後、VNCSSHでのログインを確認できました。

f:id:yamori-tech:20210923171646p:plain

KVMはネットワークやオプションや設定の管理が面倒で挫折し、VMwareを使っているという過去があるため、今後継続して利用するかはわかりませんが、うまく動作することはわかりました。

ただ、仮想マシンに付けたCentOS7のインストールディスクをWebUIから外すことができず、実際使うとなるとWebUIからできない操作は多くて難儀しそうだと思いました。

まとめ

Cockpitで期待したとおりDockerとKVMの管理が行えることがわかりました。

今後は仮想マシンVMware、コンテナはCockpitサーバ上でDockerで管理しようかと考えています。

DNSサーバや単純なcronを動かしているサーバなどが存在するので、これからぼちぼちとContainer環境に移行していこうかと思います。