こんにちは。サイオステクノロジー OSS サポート担当 Y です。
今回は Linux サーバの管理ツールである Cockpit を使って、Web UI から Docker コンテナを操作する方法を検証してみました。(※以下の内容は CentOS 7.6/Cockpit 195/Docker 1.13.1/NGINX 1.17.5 にて検証しています。)
■はじめに
前回及び前々回の記事で Cockpit を利用し Web UI から Linux サーバを管理する方法を検証しましたが、Cockpit では Web UI から Docker コンテナの操作も実施することが可能です。
今回は、Cockpit の Web UI から Docker コンテナを操作する方法を検証してみました。
■インストール
まずはインストールです。前々回の記事で紹介したインストール方法を参考にしながら Cockpit をインストールします。
また、今回は Docker コンテナの操作に必要な cockpit-docker というパッケージも一緒にインストールします。
Docker については、上記 cockpit-docker の依存関係のパッケージとして一緒にインストールされます。
[root@cockpit-docker ~]# yum search cockpit-docker ~(中略)~ ======================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================== インストール中: cockpit x86_64 195.1-1.el7.centos.0.1 extras 48 k cockpit-docker x86_64 195.1-1.el7.centos.0.1 extras 370 k 依存性関連でのインストールをします: atomic-registries x86_64 1:1.22.1-29.gitb507039.el7 extras 35 k cockpit-bridge x86_64 195.1-1.el7.centos.0.1 extras 552 k cockpit-system noarch 195.1-1.el7.centos.0.1 extras 1.6 M cockpit-ws x86_64 195.1-1.el7.centos.0.1 extras 806 k container-selinux noarch 2:2.107-3.el7 extras 39 k container-storage-setup noarch 0.11.0-2.git5eaf76c.el7 extras 35 k containers-common x86_64 1:0.1.37-3.el7.centos extras 21 k docker x86_64 2:1.13.1-103.git7f2769b.el7.centos extras 18 M docker-client x86_64 2:1.13.1-103.git7f2769b.el7.centos extras 3.9 M docker-common x86_64 2:1.13.1-103.git7f2769b.el7.centos extras 97 k oci-register-machine x86_64 1:0-6.git2b44233.el7 extras 1.1 M oci-systemd-hook x86_64 1:0.2.0-1.git05e6923.el7_6 extras 34 k oci-umount x86_64 2:2.5-3.el7 extras 33 k python-pytoml noarch 0.1.14-1.git7dea353.el7 extras 18 k subscription-manager-rhsm-certificates x86_64 1.24.13-3.el7.centos updates 228 k トランザクションの要約 ======================================================================================================== ~(中略)~ インストール: cockpit.x86_64 0:195.1-1.el7.centos.0.1 cockpit-docker.x86_64 0:195.1-1.el7.centos.0.1 依存性関連をインストールしました: atomic-registries.x86_64 1:1.22.1-29.gitb507039.el7 cockpit-bridge.x86_64 0:195.1-1.el7.centos.0.1 cockpit-system.noarch 0:195.1-1.el7.centos.0.1 cockpit-ws.x86_64 0:195.1-1.el7.centos.0.1 container-selinux.noarch 2:2.107-3.el7 container-storage-setup.noarch 0:0.11.0-2.git5eaf76c.el7 containers-common.x86_64 1:0.1.37-3.el7.centos docker.x86_64 2:1.13.1-103.git7f2769b.el7.centos docker-client.x86_64 2:1.13.1-103.git7f2769b.el7.centos docker-common.x86_64 2:1.13.1-103.git7f2769b.el7.centos oci-register-machine.x86_64 1:0-6.git2b44233.el7 oci-systemd-hook.x86_64 1:0.2.0-1.git05e6923.el7_6 oci-umount.x86_64 2:2.5-3.el7 python-pytoml.noarch 0:0.1.14-1.git7dea353.el7 subscription-manager-rhsm-certificates.x86_64 0:1.24.13-3.el7.centos 完了しました! [root@cockpit-docker ~]# [root@cockpit-docker ~]# systemctl enable --now cockpit.socket Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket. [root@cockpit-docker ~]#
また、Web UI にアクセス可能にするために Firewalld で Cockpit の通信を許可する設定を実施します。
[root@cockpit-docker ~]# firewall-cmd --permanent --zone=public --add-service=cockpit success [root@cockpit-docker ~]# [root@cockpit-docker ~]# firewall-cmd --reload success [root@cockpit-docker ~]#
以上でインストール作業は完了です。
■Web UI への接続
インストール後、Web UI (https://ip-address-of-machine:9090) にアクセス及びログインすると、画面左に “コンテナー” というタブが追加されています。(cockpit-docker をインストールしていない場合、このタブは表示されません。)
この “コンテナー” タブを選択すると以下の様な画面が表示されるため、”Docker の起動” を選択し、Docker を起動します。
Docker が起動すると、以下の様な画面が表示されると思います。
これで準備は完了です。
■コンテナイメージの取得
それではさっそく検証してみます。(今回の検証では Docker Hub で公開されている公式の NGINX イメージを利用します。)
まずはイメージの取得 (docker pull) です。画面右下の “新規イメージの取得” を選択します。
すると、以下の様な画面が表示されるので、検索欄に “nginx” と入力します。
検索欄に “nginx” と入力すると、自動でイメージの検索が実施されるため、検索結果から “Official build of Nginx.” と記載されている nginx イメージを選択します。
イメージ選択後、”Tag” 欄にイメージの tag (今回は 1.17.5) を入力し、”ダウンロード” を選択します。
イメージのダウンロードが完了すると、”イメージ” 欄にダウンロードされたイメージ (docker.io/nginx:1.17.5) が表示されます。
■NGINX コンテナ起動
それではいよいよ、コンテナを起動してみます。
先程ダウンロードしたイメージの横にある “▶” を選択します。
すると、以下の様に起動するコンテナの詳細を設定する画面が表示されるので、必要に応じて設定を変更します。
今回は、コンテナー名を “nginx-test” に、ホスト側で公開する port を “8080” に設定して、”実行” を選択します。
コンテナが実行されると、”コンテナー” 欄に実行したコンテナ “nginx-test” が表示されます。
また、コンテナ名をクリックすると以下の様な詳細画面が表示され、この画面から実行中のコンテナの情報を参照することや、当該コンテナの停止/再起動等の操作を実施することも可能です。
なお、ダウンロードしたイメージや起動したコンテナの情報は、端末 (CLI) から確認することも可能です。
■NGINX コンテナにアクセス
先程起動した NGINX コンテナは、コンテナの 80 port (NGINX が LISTEN してる port) をホスト側の 8080 port に公開しているため、ホスト側の 8080 port からコンテナにアクセスすることが可能です。
実際にブラウザから https://<ホストの IP アドレス>:8080/ にアクセスすると、以下の様に NGINX のデフォルトで設定されている index.html の内容が表示されることが確認できます。
また、コンテナ起動時の設定で “端末の使用” にチェックを付けている場合、先程紹介したコンテナの詳細画面にて、当該コンテナの標準出力/標準エラーの内容 (公式の NGINX コンテナの場合、access.log と error.log の内容) を Web UI 上から確認することも可能です。
■NGINX コンテナの停止及び削除
最後に、コンテナの停止と削除を実行してみます。
“コンテナー” 欄のコンテナ名の左に表示されている “>” を選択すると、詳細情報に加えて “停止” ボタンが表示されます。
この “停止” ボタンを選択すると、当該コンテナを停止させることが可能です。
コンテナを停止すると “コンテナー” 欄から表示が消えますが、コンテナが停止しているだけであり、コンテナが完全に削除された訳ではありません。
停止しているコンテナを表示するために、画面上部の “イメージおよび実行中のコンテナー” のプルダウンを “すべて” に変更します。
すると、”コンテナー” 欄に先程停止させた nginx-test コンテナ (状態が “exited” になっている) が表示されます。
先程と同じ様に “コンテナー” 欄のコンテナ名の左に表示されている “>” を選択すると、詳細情報に加えて赤色のゴミ箱マークのボタンが表示されます。なお、この状態から “開始日” ボタン (日本語訳が微妙な感じですが…) を選択すると、再度当該コンテナを起動することも可能です。
この削除ボタン (赤いゴミ箱のマーク) を選択すると、以下の様な確認画面が表示されるため、この画面で “削除” を選択するとコンテナが完全に削除されます。
コンテナが完全に削除されると、(プルダウンで “すべて” を選択している状態でも) “コンテナー” 欄に表示されていたコンテナが表示されなくなります。
■最後に
今回は Linux サーバの管理ツールである Cockpit を使って、Web UI から Docker コンテナを操作する方法を検証してみました。
現状、Cockpit にコンテナオーケストレーションツールの様な機能は付いていませんが、ちょっとしたコンテナの検証を実施する際には、Web UI からお手軽にコンテナを操作できる Cockpit も選択肢の一つになるのではないでしょうか。