Cockpit (Linux サーバ管理ツール) で Docker コンテナを起動する方法を検証してみた

こんにちは。サイオステクノロジー 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 をインストールしていない場合、このタブは表示されません。)

001_container_tab

この “コンテナー” タブを選択すると以下の様な画面が表示されるため、”Docker の起動” を選択し、Docker を起動します。

002_start_dockerd

Docker が起動すると、以下の様な画面が表示されると思います。

003_after_start_dockerd

これで準備は完了です。

■コンテナイメージの取得

それではさっそく検証してみます。(今回の検証では Docker Hub で公開されている公式の NGINX イメージを利用します。)

まずはイメージの取得 (docker pull) です。画面右下の “新規イメージの取得” を選択します。

004_pull_image_1

すると、以下の様な画面が表示されるので、検索欄に “nginx” と入力します。

005_pull_image_2

検索欄に “nginx” と入力すると、自動でイメージの検索が実施されるため、検索結果から “Official build of Nginx.” と記載されている nginx イメージを選択します。

006_pull_image_3

イメージ選択後、”Tag” 欄にイメージの tag (今回は 1.17.5) を入力し、”ダウンロード” を選択します。

007_pull_image_4

イメージのダウンロードが完了すると、”イメージ” 欄にダウンロードされたイメージ (docker.io/nginx:1.17.5) が表示されます。

008_pull_image_5

■NGINX コンテナ起動

それではいよいよ、コンテナを起動してみます。

先程ダウンロードしたイメージの横にある “▶” を選択します。

010_run_container_1

すると、以下の様に起動するコンテナの詳細を設定する画面が表示されるので、必要に応じて設定を変更します。

011_run_container_2

今回は、コンテナー名を “nginx-test” に、ホスト側で公開する port を “8080” に設定して、”実行” を選択します。

012_run_container_3

コンテナが実行されると、”コンテナー” 欄に実行したコンテナ “nginx-test” が表示されます。

013_run_container_4

また、コンテナ名をクリックすると以下の様な詳細画面が表示され、この画面から実行中のコンテナの情報を参照することや、当該コンテナの停止/再起動等の操作を実施することも可能です。

014_run_container_5

なお、ダウンロードしたイメージや起動したコンテナの情報は、端末 (CLI) から確認することも可能です。

015_run_container_6

■NGINX コンテナにアクセス

先程起動した NGINX コンテナは、コンテナの 80 port (NGINX が LISTEN してる port) をホスト側の 8080 port に公開しているため、ホスト側の 8080 port からコンテナにアクセスすることが可能です。

実際にブラウザから https://<ホストの IP アドレス>:8080/ にアクセスすると、以下の様に NGINX のデフォルトで設定されている index.html の内容が表示されることが確認できます。

016_container_access

また、コンテナ起動時の設定で “端末の使用” にチェックを付けている場合、先程紹介したコンテナの詳細画面にて、当該コンテナの標準出力/標準エラーの内容 (公式の NGINX コンテナの場合、access.log と error.log の内容) を Web UI 上から確認することも可能です。

017_container_stdout_stderr

■NGINX コンテナの停止及び削除

最後に、コンテナの停止と削除を実行してみます。

“コンテナー” 欄のコンテナ名の左に表示されている “>” を選択すると、詳細情報に加えて “停止” ボタンが表示されます。

この “停止” ボタンを選択すると、当該コンテナを停止させることが可能です。

018_container_stop

コンテナを停止すると “コンテナー” 欄から表示が消えますが、コンテナが停止しているだけであり、コンテナが完全に削除された訳ではありません。

019_container_after_stop

停止しているコンテナを表示するために、画面上部の “イメージおよび実行中のコンテナー” のプルダウンを “すべて” に変更します。

020_container_show_all

すると、”コンテナー” 欄に先程停止させた nginx-test コンテナ (状態が “exited” になっている) が表示されます。

020_container_exited

先程と同じ様に “コンテナー” 欄のコンテナ名の左に表示されている “>” を選択すると、詳細情報に加えて赤色のゴミ箱マークのボタンが表示されます。なお、この状態から “開始日” ボタン (日本語訳が微妙な感じですが…) を選択すると、再度当該コンテナを起動することも可能です。

021_container_delete_1

この削除ボタン (赤いゴミ箱のマーク) を選択すると、以下の様な確認画面が表示されるため、この画面で “削除” を選択するとコンテナが完全に削除されます。

022_container_delete_2

コンテナが完全に削除されると、(プルダウンで “すべて” を選択している状態でも) “コンテナー” 欄に表示されていたコンテナが表示されなくなります。

022_container_delete_3

■最後に

今回は Linux サーバの管理ツールである Cockpit を使って、Web UI から Docker コンテナを操作する方法を検証してみました。

現状、Cockpit にコンテナオーケストレーションツールの様な機能は付いていませんが、ちょっとしたコンテナの検証を実施する際には、Web UI からお手軽にコンテナを操作できる Cockpit も選択肢の一つになるのではないでしょうか。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です