cockpit docker をCentOS7上で使用する

cockpitとは

cockpitは、dockerの管理をWebベースのUIでおこなうためのツールです。docker自体、コマンドラインでの管理が大変なものではありませんが、UIで管理するのも楽かも知れません。と言う程度の知識ですが、インストールして使ってみたいと思います。

dockerをインストールする

過去の記事でCentOS7にdockerをインストールする記事があります。

今回の環境は、7をインストールして、yum update を行っただけの環境で、標準的なリポジトリのみでインストールしたらどうなるのか?を確認したいと考えていますので、過去の記事とは少しだけ違う手順になっているかと思いますが、基本的な手順は同じです。
検証環境はVirualbox上にCentOS7デスクトップをインストールした環境で実施しています。

インストール環境のリポジトリ

インストール環境のリポジトリは下記のようになっています。

# yum repolist

実際の操作サンプル

[root@centos7-gnm-103 ~]# yum repolist
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.usonyx.net
 * extras: ftp.iij.ad.jp
 * updates: download.nus.edu.sg
リポジトリー ID             リポジトリー名           状態
base/7/x86_64               CentOS-7 - Base          9,591
centos-sclo-rh/x86_64       CentOS-7 - SCLo rh       6,172
centos-sclo-sclo/x86_64     CentOS-7 - SCLo sclo     448
extras/7/x86_64             CentOS-7 - Extras        280
updates/7/x86_64            CentOS-7 - Updates       1,059

dockerパッケージのインストール

# yum install 

実際の操作サンプル

[root@centos7-gnm-103 ~]# yum install docker
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.usonyx.net
 * extras: ftp.iij.ad.jp
 * updates: download.nus.edu.sg
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker.x86_64 2:1.12.6-61.git85d7426.el7.centos を 
--> 依存性の処理をしています: docker-common = 2:1.12.6-61.git85d7426.el7.centos のパッケージ: 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64
--> 依存性の処理をしています: docker-client = 2:1.12.6-61.git85d7426.el7.centos のパッケージ: 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ docker-client.x86_64 2:1.12.6-61.git85d7426.el7.centos を 
---> パッケージ docker-common.x86_64 2:1.12.6-61.git85d7426.el7.centos を 
--> 依存性の処理をしています: oci-umount >= 2:2.0.0-1 のパッケージ: 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64
--> 依存性の処理をしています: oci-systemd-hook >= 1:0.1.4-9 のパッケージ: 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64
--> 依存性の処理をしています: oci-register-machine >= 1:0-3.10 のパッケージ: 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64
--> 依存性の処理をしています: container-storage-setup >= 0.7.0-1 のパッケージ: 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64
--> 依存性の処理をしています: container-selinux >= 2:2.21-2 のパッケージ: 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64
--> 依存性の処理をしています: skopeo-containers のパッケージ: 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ container-selinux.noarch 2:2.28-1.git85ce147.el7 を 
---> パッケージ container-storage-setup.noarch 0:0.7.0-1.git4ca59c5.el7 を 
---> パッケージ oci-register-machine.x86_64 1:0-3.13.gitcd1e331.el7 を 
---> パッケージ oci-systemd-hook.x86_64 1:0.1.14-1.git1ba44c6.el7 を 
---> パッケージ oci-umount.x86_64 2:2.0.0-1.git299e781.el7 を 
---> パッケージ skopeo-containers.x86_64 1:0.1.24-1.dev.git28d4e08.el7 を 
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package                      アーキテクチャー
                                          バージョン                              リポジトリー
                                                                                               容量
====================================================================================================
インストール中:
 docker                       x86_64      2:1.12.6-61.git85d7426.el7.centos       extras       15 M
依存性関連でのインストールをします:
 container-selinux            noarch      2:2.28-1.git85ce147.el7                 extras       29 k
 container-storage-setup      noarch      0.7.0-1.git4ca59c5.el7                  extras       32 k
 docker-client                x86_64      2:1.12.6-61.git85d7426.el7.centos       extras      3.4 M
 docker-common                x86_64      2:1.12.6-61.git85d7426.el7.centos       extras       80 k
 oci-register-machine         x86_64      1:0-3.13.gitcd1e331.el7                 extras      1.1 M
 oci-systemd-hook             x86_64      1:0.1.14-1.git1ba44c6.el7               extras       32 k
 oci-umount                   x86_64      2:2.0.0-1.git299e781.el7                extras       27 k
 skopeo-containers            x86_64      1:0.1.24-1.dev.git28d4e08.el7           extras      8.5 k

トランザクションの要約
====================================================================================================
  1 パッケージ (+8 個の依存関係のパッケージ)

総ダウンロード容量: 19 M
インストール容量: 66 M
Is this ok [y/d/N]: y
Downloading packages:
(1/9): container-storage-setup-0.7.0-1.git4ca59c5.el7.noarch.rpm             |  32 kB  00:00:03
(2/9): container-selinux-2.28-1.git85ce147.el7.noarch.rpm                    |  29 kB  00:00:03
(3/9): docker-common-1.12.6-61.git85d7426.el7.centos.x86_64.rpm              |  80 kB  00:00:00
(4/9): oci-systemd-hook-0.1.14-1.git1ba44c6.el7.x86_64.rpm                   |  32 kB  00:00:00
(5/9): oci-umount-2.0.0-1.git299e781.el7.x86_64.rpm                          |  27 kB  00:00:00
(6/9): skopeo-containers-0.1.24-1.dev.git28d4e08.el7.x86_64.rpm              | 8.5 kB  00:00:00
(7/9): oci-register-machine-0-3.13.gitcd1e331.el7.x86_64.rpm                 | 1.1 MB  00:00:00
(8/9): docker-client-1.12.6-61.git85d7426.el7.centos.x86_64.rpm              | 3.4 MB  00:00:06
(9/9): docker-1.12.6-61.git85d7426.el7.centos.x86_64.rpm                     |  15 MB  00:00:08
----------------------------------------------------------------------------------------------------
合計                                                                2.2 MB/s |  19 MB  00:00:08
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:oci-register-machine-0-3.13.gitcd1e331.el7.x86_64                 1/9
  インストール中          : 2:container-selinux-2.28-1.git85ce147.el7.noarch                    2/9
  インストール中          : 1:skopeo-containers-0.1.24-1.dev.git28d4e08.el7.x86_64              3/9
  インストール中          : container-storage-setup-0.7.0-1.git4ca59c5.el7.noarch               4/9
  インストール中          : 2:oci-umount-2.0.0-1.git299e781.el7.x86_64                          5/9
  インストール中          : 1:oci-systemd-hook-0.1.14-1.git1ba44c6.el7.x86_64                   6/9
  インストール中          : 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64              7/9
  インストール中          : 2:docker-client-1.12.6-61.git85d7426.el7.centos.x86_64              8/9
  インストール中          : 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64                     9/9
  検証中                  : 2:docker-1.12.6-61.git85d7426.el7.centos.x86_64                     1/9
  検証中                  : 2:docker-common-1.12.6-61.git85d7426.el7.centos.x86_64              2/9
  検証中                  : 1:oci-systemd-hook-0.1.14-1.git1ba44c6.el7.x86_64                   3/9
  検証中                  : 2:oci-umount-2.0.0-1.git299e781.el7.x86_64                          4/9
  検証中                  : container-storage-setup-0.7.0-1.git4ca59c5.el7.noarch               5/9
  検証中                  : 1:skopeo-containers-0.1.24-1.dev.git28d4e08.el7.x86_64              6/9
  検証中                  : 2:container-selinux-2.28-1.git85ce147.el7.noarch                    7/9
  検証中                  : 1:oci-register-machine-0-3.13.gitcd1e331.el7.x86_64                 8/9
  検証中                  : 2:docker-client-1.12.6-61.git85d7426.el7.centos.x86_64              9/9

:
  docker.x86_64 2:1.12.6-61.git85d7426.el7.centos

依存性関連をインストールしました:
  container-selinux.noarch 2:2.28-1.git85ce147.el7
  container-storage-setup.noarch 0:0.7.0-1.git4ca59c5.el7
  docker-client.x86_64 2:1.12.6-61.git85d7426.el7.centos
  docker-common.x86_64 2:1.12.6-61.git85d7426.el7.centos
  oci-register-machine.x86_64 1:0-3.13.gitcd1e331.el7
  oci-systemd-hook.x86_64 1:0.1.14-1.git1ba44c6.el7
  oci-umount.x86_64 2:2.0.0-1.git299e781.el7
  skopeo-containers.x86_64 1:0.1.24-1.dev.git28d4e08.el7

完了しました!

dockerを開始する

dockerの設定を行い、dockerを開始して、dockerを使える状態にします。

# systemctl enable docker
# systemctl start docker

実際の操作サンプル

[root@centos7-gnm-103 ~]# docker -v
Docker version 1.12.6, build 85d7426/1.12.6
[root@centos7-gnm-103 ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@centos7-gnm-103 ~]# systemctl start docker
[root@centos7-gnm-103 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2017-11-06 11:20:17 JST; 4s ago
     Docs: http://docs.docker.com
 Main PID: 5449 (dockerd-current)
   CGroup: /system.slice/docker.service
           tq5449 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-r...
           mq5454 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/dock...

11月 06 11:20:16 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:16.69..."
11月 06 11:20:16 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:16.77..."
11月 06 11:20:16 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:16.77..."
11月 06 11:20:16 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:16.79..."
11月 06 11:20:16 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:16.92..."
11月 06 11:20:17 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:17.08..."
11月 06 11:20:17 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:17.08..."
11月 06 11:20:17 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:17.08...6
11月 06 11:20:17 centos7-gnm-103.vsmple.com systemd[1]: Started Docker Application Container E...e.
11月 06 11:20:17 centos7-gnm-103.vsmple.com dockerd-current[5449]: time="2017-11-06T11:20:17.11..."
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos7-gnm-103 ~]# systemctl list-units |grep docker
  sys-devices-virtual-net-docker0.device      loaded active plugged   /sys/devices/virtual/net/docker0
  sys-subsystem-net-devices-docker0.device    loaded active plugged   /sys/subsystem/net/devices/docker0
● docker-storage-setup.service               loaded failed failed    Docker Storage Setup
  docker.service                              loaded active running   Docker Application Container Engine
  docker-cleanup.timer                        loaded active waiting   Run docker-cleanup every hour

docker-storage-setup.serviceがFailed

サービスの動作状況を確認したところ、docker-storage-setup.serviceがFailedになっていました。このエラーが発生していてもdockerは動作しているようです。

[root@centos7-gnm-103 ~]# systemctl status -l docker-storage-setup.service
● docker-storage-setup.service - Docker Storage Setup
   Loaded: loaded (/usr/lib/systemd/system/docker-storage-setup.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 月 2017-11-06 13:46:50 JST; 6s ago
  Process: 2245 ExecStart=/usr/bin/container-storage-setup (code=exited, status=1/FAILURE)
 Main PID: 2245 (code=exited, status=1/FAILURE)

11月 06 13:46:50 centos7-gnm-103.vsmple.com systemd[1]: Starting Docker Storage Setup...
11月 06 13:46:50 centos7-gnm-103.vsmple.com container-storage-setup[2245]: INFO: Volume group backing root filesystem could not be determined
11月 06 13:46:50 centos7-gnm-103.vsmple.com container-storage-setup[2245]: ERROR: No valid volume group found. Exiting.
11月 06 13:46:50 centos7-gnm-103.vsmple.com systemd[1]: docker-storage-setup.service: main process exited, code=exited, status=1/FAILURE
11月 06 13:46:50 centos7-gnm-103.vsmple.com systemd[1]: Failed to start Docker Storage Setup.
11月 06 13:46:50 centos7-gnm-103.vsmple.com systemd[1]: Unit docker-storage-setup.service entered failed state.
11月 06 13:46:50 centos7-gnm-103.vsmple.com systemd[1]: docker-storage-setup.service failed.

Volume Groupを使ってないからでしょうか?こちらは対応を確認できていないので、申し訳ありません。

もしProxy環境ならば

Proxy環境で使用する場合はProxy設定を行います。

  1. /usr/lib/systemd/system/docker.serviceを/etc/systemd/system/以下にコピーします
  2. コピーしたdocker.serviceを編集します
  3. daemonを再起動します
  4. dockerを再起動します
# cp -p /usr/lib/systemd/system/docker.service /etc/systemd/system/
# vi /etc/systemd/system/docker.service

編集前
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \

編集後
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
Environment="HTTP_PROXY=http://proxyサーバ:port番号"
ExecStart=/usr/bin/dockerd-current \

# systemctl daemon-reload
# systemctl restart docker

dockerを使ってみる

dockerを開始したので、dockerコマンドを試して確認してみます。インストールしただけなので、特に何も表示はされないと思いますが・・・

[root@centos7-gnm-103 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@centos7-gnm-103 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@centos7-gnm-103 ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

***確認だけなので略***

cockpitをインストールする

dockerの動作が確認できたら、cockpitをインストールします。インストール後はcockpitを開始して起動設定を変更します。

# yum install cockpit
# yum install cockpit-docker
# systemctl start cockpit.service
# systemctl enable cockpit.service

実際の操作サンプル

[root@centos7-gnm-103 ~]# yum install cockpit cockpit-docker
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.usonyx.net
 * extras: ftp.iij.ad.jp
 * updates: download.nus.edu.sg
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ cockpit.x86_64 0:151-1.el7.centos を インストール
--> 依存性の処理をしています: cockpit-ws = 151-1.el7.centos のパッケージ: cockpit-151-1.el7.centos.x86_64
--> 依存性の処理をしています: cockpit-system = 151-1.el7.centos のパッケージ: cockpit-151-1.el7.centos.x86_64
--> 依存性の処理をしています: cockpit-bridge = 151-1.el7.centos のパッケージ: cockpit-151-1.el7.centos.x86_64
---> パッケージ cockpit-docker.x86_64 0:151-1.el7.centos を インストール
--> トランザクションの確認を実行しています。
---> パッケージ cockpit-bridge.x86_64 0:151-1.el7.centos を インストール
---> パッケージ cockpit-system.noarch 0:151-1.el7.centos を インストール
---> パッケージ cockpit-ws.x86_64 0:151-1.el7.centos を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package                   アーキテクチャー  バージョン                     リポジトリー       容量
====================================================================================================
インストール中:
 cockpit                   x86_64            151-1.el7.centos               extras             45 k
 cockpit-docker            x86_64            151-1.el7.centos               extras            277 k
依存性関連でのインストールをします:
 cockpit-bridge            x86_64            151-1.el7.centos               extras            455 k
 cockpit-system            noarch            151-1.el7.centos               extras            651 k
 cockpit-ws                x86_64            151-1.el7.centos               extras            424 k

トランザクションの要約
====================================================================================================
インストール  2 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 1.8 M
インストール容量: 2.4 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): cockpit-151-1.el7.centos.x86_64.rpm                                   |  45 kB  00:00:03
(2/5): cockpit-docker-151-1.el7.centos.x86_64.rpm                            | 277 kB  00:00:03
(3/5): cockpit-ws-151-1.el7.centos.x86_64.rpm                                | 424 kB  00:00:00
(4/5): cockpit-bridge-151-1.el7.centos.x86_64.rpm                            | 455 kB  00:00:03
(5/5): cockpit-system-151-1.el7.centos.noarch.rpm                            | 651 kB  00:00:06
----------------------------------------------------------------------------------------------------
合計                                                                286 kB/s | 1.8 MB  00:00:06
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : cockpit-bridge-151-1.el7.centos.x86_64                              1/5
  インストール中          : cockpit-system-151-1.el7.centos.noarch                              2/5
  インストール中          : cockpit-ws-151-1.el7.centos.x86_64                                  3/5
  インストール中          : cockpit-151-1.el7.centos.x86_64                                     4/5
  インストール中          : cockpit-docker-151-1.el7.centos.x86_64                              5/5
  検証中                  : cockpit-ws-151-1.el7.centos.x86_64                                  1/5
  検証中                  : cockpit-docker-151-1.el7.centos.x86_64                              2/5
  検証中                  : cockpit-system-151-1.el7.centos.noarch                              3/5
  検証中                  : cockpit-151-1.el7.centos.x86_64                                     4/5
  検証中                  : cockpit-bridge-151-1.el7.centos.x86_64                              5/5

インストール:
  cockpit.x86_64 0:151-1.el7.centos             cockpit-docker.x86_64 0:151-1.el7.centos

依存性関連をインストールしました:
  cockpit-bridge.x86_64 0:151-1.el7.centos         cockpit-system.noarch 0:151-1.el7.centos
  cockpit-ws.x86_64 0:151-1.el7.centos

完了しました!
[root@centos7-gnm-103 ~]# systemctl start cockpit.service
[root@centos7-gnm-103 ~]# systemctl enable cockpit.service
[root@centos7-gnm-103 ~]# systemctl status cockpit.service
● cockpit.service - Cockpit Web Service
   Loaded: loaded (/usr/lib/systemd/system/cockpit.service; static; vendor preset: disabled)
   Active: active (running) since 月 2017-11-06 14:24:11 JST; 23s ago
     Docs: man:cockpit-ws(8)
 Main PID: 4147 (cockpit-ws)
   CGroup: /system.slice/cockpit.service
           mq4147 /usr/libexec/cockpit-ws

11月 06 14:24:10 centos7-gnm-103.vsmple.com systemd[1]: Starting Cockpit Web Service...
11月 06 14:24:11 centos7-gnm-103.vsmple.com remotectl[4139]: Generating temporary certificate us...
11月 06 14:24:11 centos7-gnm-103.vsmple.com remotectl[4139]: Error generating temporary dummy c...l
11月 06 14:24:11 centos7-gnm-103.vsmple.com remotectl[4139]: Generating temporary certificate us...
11月 06 14:24:11 centos7-gnm-103.vsmple.com systemd[1]: Started Cockpit Web Service.
11月 06 14:24:11 centos7-gnm-103.vsmple.com cockpit-ws[4147]: Using certificate: /etc/cockpit/w...t
Hint: Some lines were ellipsized, use -l to show in full.

firewallを設定する

CentOS7では、デフォルトでfirewalldが有効になっています。デフォルト状態ではsshとdhcpv6-clientが設定されているので、必要なサービスを通過させるように設定します。今回は最低限設定が必要なのpublicゾーンに対してcockpitサービスを追加します。

Firewallの設定を確認

[root@centos7-gnm-103 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8 enp0s9
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Firewallの設定を変更(設定変更後はfirewall-cmd –reloadを実行します)

# firewall-cmd --add-service=cockpit --zone=public --permanent

実際の操作サンプル

[root@centos7-gnm-103 ~]# firewall-cmd --add-service=cockpit --zone=public --permanent
success
[root@centos7-gnm-103 ~]# firewall-cmd --reload
success
[root@centos7-gnm-103 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8 enp0s9
  sources:
  services: ssh dhcpv6-client cockpit
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

cockpitを確認する

Webブラウザからcockpitへアクセスします。cockpitのURLは https://cockpitサーバ:9090 です。

  1. Webブラウザを開いてhttps://cockpitサーバ:9090へアクセスします
  2. httpsですが証明書が確認できないためエラーになります
    キャプチャをfirefox
  3. docker cockpit

  4. セキュリティ例外の対応で進めます
  5. docker cockpit

  6. cockpitのログイン画面が開きます
    コンピュータに登録されているアカウントとパスワードでログインします
  7. docker cockpit

  8. ログインが完了するとシステム画面が開きます
  9. docker cockpit

  10. 左側メニューの[コンテナ]をクリックしてdocker管理画面に移動します
  11. docker cockpit

cockpitへアクセス

cockpitはdocker専用という訳ではありません。システムの情報を取得したり、サービスの管理などもできます。端末を開けばターミナルの操作もできるので、意外と役に立つかもしれません。dockerイメージの取得などもできます。

システム画面
docker cockpit

サービス画面
docker cockpit

端末画面
docker cockpit