サーバー 開発

【CentOS7・8】dockerを使ってRocket.Chatをインストール

2020年4月20日

新型コロナの影響で社内でもテレワークが進んでいる。
聞きたいことが発生したら近くの席に行き、口頭で話することがテレワークではできなくなり、電話またはメールでのやりとりになった。
メールでのやりとりでは履歴が追いにくく、複数人参加するにはかなり不向きとなる。
会議とかするならTeamsやZoomなどWEB会議すればいいのだが相手がどのような状況なのか見えないためいきなりWEB会議に招待するのにも気が引ける。
そのため、チャット環境を構築しようと考案したが、社内セキュリティ上クラウド環境でのチャットは使えない。
そこで、オンプレ環境でチャットができるRocket.Chatを入れることにした。

・・・というのがたてまえ。

CentOS7とCentOS8でdockerのインストールからRocket.Chatの初期設定まで記載していこうと思います。

サーバ情報

CentOS7:CentOS Linux release 7.7.1908 (Core)
SELinux:Enforcing(有効)

CentOS8:CentOS Linux release 8.1.1911 (Core)
SELinux:Enforcing(有効)

どちらも最小構成インストールです。

 

Dockerインストール

CentOS7とCentOS8でやり方が少し変わります

CentOS7

yum-utilsインストール

コマンドでリポジトリ追加できるよう、yum-utilsをインストールします。

$ sudo yum install yum-utils
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/4): base/7/x86_64/group_gz                              | 165 kB   00:00
(2/4): extras/7/x86_64/primary_db                          | 165 kB   00:00
(3/4): base/7/x86_64/primary_db                            | 6.0 MB   00:01
(4/4): updates/7/x86_64/primary_db                         | 7.6 MB   00:02
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-utils.noarch 0:1.1.31-52.el7 を インストール
--> 依存性の処理をしています: python-kitchen のパッケージ: yum-utils-1.1.31-52.el7.noarch
--> 依存性の処理をしています: libxml2-python のパッケージ: yum-utils-1.1.31-52.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ libxml2-python.x86_64 0:2.9.1-6.el7_2.3 を インストール
---> パッケージ python-kitchen.noarch 0:1.1.1-5.el7 を インストール
--> 依存性の処理をしています: python-chardet のパッケージ: python-kitchen-1.1.1-5.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-chardet.noarch 0:2.2.1-3.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package               アーキテクチャー
                                     バージョン               リポジトリー
                                                                           容量
================================================================================
インストール中:
 yum-utils             noarch        1.1.31-52.el7            base        121 k
依存性関連でのインストールをします:
 libxml2-python        x86_64        2.9.1-6.el7_2.3          base        247 k
 python-chardet        noarch        2.2.1-3.el7              base        227 k
 python-kitchen        noarch        1.1.1-5.el7              base        267 k

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

総ダウンロード容量: 862 k
インストール容量: 4.3 M
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/base/packages/libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm の公開鍵がインストールされていません
(1/4): libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm           | 247 kB   00:00
(2/4): python-kitchen-1.1.1-5.el7.noarch.rpm               | 267 kB   00:00
(3/4): yum-utils-1.1.31-52.el7.noarch.rpm                  | 121 kB   00:00
(4/4): python-chardet-2.2.1-3.el7.noarch.rpm               | 227 kB   00:00
--------------------------------------------------------------------------------
合計                                               901 kB/s | 862 kB  00:00
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-7.1908.0.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-chardet-2.2.1-3.el7.noarch               1/4
  インストール中          : python-kitchen-1.1.1-5.el7.noarch               2/4
  インストール中          : libxml2-python-2.9.1-6.el7_2.3.x86_64           3/4
  インストール中          : yum-utils-1.1.31-52.el7.noarch                  4/4
  検証中                  : python-kitchen-1.1.1-5.el7.noarch               1/4
  検証中                  : yum-utils-1.1.31-52.el7.noarch                  2/4
  検証中                  : libxml2-python-2.9.1-6.el7_2.3.x86_64           3/4
  検証中                  : python-chardet-2.2.1-3.el7.noarch               4/4

インストール:
  yum-utils.noarch 0:1.1.31-52.el7

依存性関連をインストールしました:
  libxml2-python.x86_64 0:2.9.1-6.el7_2.3  python-chardet.noarch 0:2.2.1-3.el7
  python-kitchen.noarch 0:1.1.1-5.el7

完了しました!

 

Dockerリポジトリをyumに登録

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
読み込んだプラグイン:fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

 

Dockerインストール

$ sudo yum install docker-ce
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
docker-ce-stable                                         | 3.5 kB     00:00
(1/2): docker-ce-stable/x86_64/updateinfo                  |   55 B   00:00
(2/2): docker-ce-stable/x86_64/primary_db                  |  41 kB   00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker-ce.x86_64 3:19.03.8-3.el7 を インストール
--> 依存性の処理をしています: container-selinux >= 2:2.74 のパッケージ: 3:docker-ce-19.03.8-3.el7.x86_64
--> 依存性の処理をしています: containerd.io >= 1.2.2-3 のパッケージ: 3:docker-ce-19.03.8-3.el7.x86_64
--> 依存性の処理をしています: docker-ce-cli のパッケージ: 3:docker-ce-19.03.8-3.el7.x86_64
--> 依存性の処理をしています: libcgroup のパッケージ: 3:docker-ce-19.03.8-3.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ container-selinux.noarch 2:2.107-3.el7 を インストール
--> 依存性の処理をしています: policycoreutils-python のパッケージ: 2:container-selinux-2.107-3.el7.noarch
---> パッケージ containerd.io.x86_64 0:1.2.13-3.1.el7 を インストール
---> パッケージ docker-ce-cli.x86_64 1:19.03.8-3.el7 を インストール
---> パッケージ libcgroup.x86_64 0:0.41-21.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ policycoreutils-python.x86_64 0:2.5-33.el7 を インストール
--> 依存性の処理をしています: setools-libs >= 3.3.8-4 のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: libsemanage-python >= 2.5-14 のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: audit-libs-python >= 2.1.3-4 のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: python-IPy のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1(VERS_1.4)(64bit) のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1(VERS_1.2)(64bit) のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: libapol.so.4(VERS_4.0)(64bit) のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: checkpolicy のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1()(64bit) のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> 依存性の処理をしています: libapol.so.4()(64bit) のパッケージ: policycoreutils-python-2.5-33.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ audit-libs-python.x86_64 0:2.8.5-4.el7 を インストール
---> パッケージ checkpolicy.x86_64 0:2.5-8.el7 を インストール
---> パッケージ libsemanage-python.x86_64 0:2.5-14.el7 を インストール
---> パッケージ python-IPy.noarch 0:0.75-6.el7 を インストール
---> パッケージ setools-libs.x86_64 0:3.3.8-4.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                  アーキテクチャー
                                   バージョン          リポジトリー        容量
================================================================================
インストール中:
 docker-ce                x86_64   3:19.03.8-3.el7     docker-ce-stable    25 M
依存性関連でのインストールをします:
 audit-libs-python        x86_64   2.8.5-4.el7         base                76 k
 checkpolicy              x86_64   2.5-8.el7           base               295 k
 container-selinux        noarch   2:2.107-3.el7       extras              39 k
 containerd.io            x86_64   1.2.13-3.1.el7      docker-ce-stable    23 M
 docker-ce-cli            x86_64   1:19.03.8-3.el7     docker-ce-stable    40 M
 libcgroup                x86_64   0.41-21.el7         base                66 k
 libsemanage-python       x86_64   2.5-14.el7          base               113 k
 policycoreutils-python   x86_64   2.5-33.el7          base               457 k
 python-IPy               noarch   0.75-6.el7          base                32 k
 setools-libs             x86_64   3.3.8-4.el7         base               620 k

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

総ダウンロード容量: 89 M
インストール容量: 369 M
Is this ok [y/d/N]: y
Downloading packages:
(1/11): audit-libs-python-2.8.5-4.el7.x86_64.rpm           |  76 kB   00:00
(2/11): container-selinux-2.107-3.el7.noarch.rpm           |  39 kB   00:00
(3/11): checkpolicy-2.5-8.el7.x86_64.rpm                   | 295 kB   00:01
warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-19.03.8-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
docker-ce-19.03.8-3.el7.x86_64.rpm の公開鍵がインストールされていません
(4/11): docker-ce-19.03.8-3.el7.x86_64.rpm                 |  25 MB   00:01
(5/11): containerd.io-1.2.13-3.1.el7.x86_64.rpm            |  23 MB   00:01
(6/11): libcgroup-0.41-21.el7.x86_64.rpm                   |  66 kB   00:00
(7/11): libsemanage-python-2.5-14.el7.x86_64.rpm           | 113 kB   00:00
(8/11): policycoreutils-python-2.5-33.el7.x86_64.rpm       | 457 kB   00:00
(9/11): python-IPy-0.75-6.el7.noarch.rpm                   |  32 kB   00:00
(10/11): docker-ce-cli-19.03.8-3.el7.x86_64.rpm            |  40 MB   00:01
(11/11): setools-libs-3.3.8-4.el7.x86_64.rpm               | 620 kB   00:01
--------------------------------------------------------------------------------
合計                                                26 MB/s |  89 MB  00:03
https://download.docker.com/linux/centos/gpg から鍵を取得中です。
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 From       : https://download.docker.com/linux/centos/gpg
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : libcgroup-0.41-21.el7.x86_64                   1/11
  インストール中          : setools-libs-3.3.8-4.el7.x86_64                2/11
  インストール中          : audit-libs-python-2.8.5-4.el7.x86_64           3/11
  インストール中          : python-IPy-0.75-6.el7.noarch                   4/11
  インストール中          : 1:docker-ce-cli-19.03.8-3.el7.x86_64           5/11
  インストール中          : libsemanage-python-2.5-14.el7.x86_64           6/11
  インストール中          : checkpolicy-2.5-8.el7.x86_64                   7/11
  インストール中          : policycoreutils-python-2.5-33.el7.x86_64       8/11
  インストール中          : 2:container-selinux-2.107-3.el7.noarch         9/11
  インストール中          : containerd.io-1.2.13-3.1.el7.x86_64           10/11
  インストール中          : 3:docker-ce-19.03.8-3.el7.x86_64              11/11
  検証中                  : checkpolicy-2.5-8.el7.x86_64                   1/11
  検証中                  : policycoreutils-python-2.5-33.el7.x86_64       2/11
  検証中                  : libsemanage-python-2.5-14.el7.x86_64           3/11
  検証中                  : 2:container-selinux-2.107-3.el7.noarch         4/11
  検証中                  : 1:docker-ce-cli-19.03.8-3.el7.x86_64           5/11
  検証中                  : python-IPy-0.75-6.el7.noarch                   6/11
  検証中                  : containerd.io-1.2.13-3.1.el7.x86_64            7/11
  検証中                  : 3:docker-ce-19.03.8-3.el7.x86_64               8/11
  検証中                  : audit-libs-python-2.8.5-4.el7.x86_64           9/11
  検証中                  : setools-libs-3.3.8-4.el7.x86_64               10/11
  検証中                  : libcgroup-0.41-21.el7.x86_64                  11/11

インストール:
  docker-ce.x86_64 3:19.03.8-3.el7

依存性関連をインストールしました:
  audit-libs-python.x86_64 0:2.8.5-4.el7
  checkpolicy.x86_64 0:2.5-8.el7
  container-selinux.noarch 2:2.107-3.el7
  containerd.io.x86_64 0:1.2.13-3.1.el7
  docker-ce-cli.x86_64 1:19.03.8-3.el7
  libcgroup.x86_64 0:0.41-21.el7
  libsemanage-python.x86_64 0:2.5-14.el7
  policycoreutils-python.x86_64 0:2.5-33.el7
  python-IPy.noarch 0:0.75-6.el7
  setools-libs.x86_64 0:3.3.8-4.el7

完了しました!

 

Docker起動、自動起動の有効化

$ sudo systemctl start docker
$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

これでDockerのインストールは完了です。

 

CentOS8

podman削除

※CentOS8はpodmanが標準となり、dockerは非推奨のようです。
 また、podmanとdockerは競合関係になるため、予めpodmanの削除が必要です。

$ sudo dnf remove podman

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] **** のパスワード:
モジュラーの依存に関する問題:

 問題 1: conflicting requests
  - nothing provides module(perl:5.26) needed by module perl-DBD-SQLite:1.58:8010020191114033549:073fa5fe-0.x86_64
 問題 2: conflicting requests
  - nothing provides module(perl:5.26) needed by module perl-DBI:1.641:8010020191113222731:16b3ab4d-0.x86_64
依存関係が解決しました。
================================================================================
 パッケージ      Arch   バージョン                             Repo       サイズ
================================================================================
削除中:
 podman          x86_64 1.6.4-4.module_el8.1.0+298+41f9343a    @AppStream  55 M
依存関係パッケージの削除:
 cockpit-podman  noarch 11-1.module_el8.1.0+298+41f9343a       @AppStream 4.0 M
未使用の依存関係の削除:
 conmon          x86_64 2:2.0.6-1.module_el8.1.0+298+41f9343a  @AppStream  85 k
 libvarlink      x86_64 18-3.el8                               @anaconda  129 k
 podman-manpages noarch 1.6.4-4.module_el8.1.0+298+41f9343a    @AppStream 137 k

トランザクションの概要
================================================================================
削除  5 パッケージ

解放された容量: 59 M

これでよろしいですか? [y/N]: y
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  scriptletの実行中: cockpit-podman-11-1.module_el8.1.0+298+41f9343a.noar   1/1
  削除             : cockpit-podman-11-1.module_el8.1.0+298+41f9343a.noar   1/5
  削除             : podman-1.6.4-4.module_el8.1.0+298+41f9343a.x86_64      2/5
  scriptletの実行中: podman-1.6.4-4.module_el8.1.0+298+41f9343a.x86_64      2/5
  削除             : podman-manpages-1.6.4-4.module_el8.1.0+298+41f9343a.   3/5
  削除             : conmon-2:2.0.6-1.module_el8.1.0+298+41f9343a.x86_64    4/5
  削除             : libvarlink-18-3.el8.x86_64                             5/5
  scriptletの実行中: libvarlink-18-3.el8.x86_64                             5/5
  検証             : cockpit-podman-11-1.module_el8.1.0+298+41f9343a.noar   1/5
  検証             : conmon-2:2.0.6-1.module_el8.1.0+298+41f9343a.x86_64    2/5
  検証             : libvarlink-18-3.el8.x86_64                             3/5
  検証             : podman-1.6.4-4.module_el8.1.0+298+41f9343a.x86_64      4/5
  検証             : podman-manpages-1.6.4-4.module_el8.1.0+298+41f9343a.   5/5

削除しました:
  podman-1.6.4-4.module_el8.1.0+298+41f9343a.x86_64
  cockpit-podman-11-1.module_el8.1.0+298+41f9343a.noarch
  conmon-2:2.0.6-1.module_el8.1.0+298+41f9343a.x86_64
  libvarlink-18-3.el8.x86_64
  podman-manpages-1.6.4-4.module_el8.1.0+298+41f9343a.noarch

完了しました!

 

dockerリポジトリをdnfに設定

yumと違い、dnfはデフォルトコマンドでリポジトリの追加ができます。

$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

Dockerインストール

dockerをインストールしたいのですが、containerd.ioが古いためそのままではインストールできません。

$ sudo dnf install docker-ce
メタデータの期限切れの最終確認: 0:00:06 時間前の 2020年04月19日 09時11分06秒 に 実施しました。
エラー:
 問題: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみて ください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)

 なので、--nobestを付与して、インストールできる直近のバージョンをインストールします。

$sudo dnf install docker-ce --nobest
メタデータの期限切れの最終確認: 0:02:43 時間前の 2020年04月19日 09時11分06秒 に 実施しました。
依存関係が解決しました。

 問題: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
================================================================================
 パッケージ        Arch       バージョン             リポジトリー         サイズ
================================================================================
インストール:
 docker-ce         x86_64     3:18.09.1-3.el7        docker-ce-stable      19 M
依存関係のインストール:
 libcgroup         x86_64     0.41-19.el8            BaseOS                70 k
 containerd.io     x86_64     1.2.0-3.el7            docker-ce-stable      22 M
 docker-ce-cli     x86_64     1:19.03.8-3.el7        docker-ce-stable      40 M
壊れた dependencies のパッケージをスキップします:
 docker-ce         x86_64     3:19.03.8-3.el7        docker-ce-stable      25 M

トランザクションの概要
================================================================================
インストール  4 パッケージ
スキップ      1 パッケージ

ダウンロードサイズの合計: 80 M
インストール済みのサイズ: 339 M
これでよろしいですか? [y/N]:y
パッケージのダウンロード:
(1/4): libcgroup-0.41-19.el8.x86_64.rpm         475 kB/s |  70 kB     00:00
(2/4): containerd.io-1.2.0-3.el7.x86_64.rpm      12 MB/s |  22 MB     00:01
(3/4): docker-ce-18.09.1-3.el7.x86_64.rpm       9.6 MB/s |  19 MB     00:01
(4/4): docker-ce-cli-19.03.8-3.el7.x86_64.rpm    14 MB/s |  40 MB     00:02
--------------------------------------------------------------------------------
合計                                             21 MB/s |  80 MB     00:03
警告: /var/cache/dnf/docker-ce-stable-091d8a9c23201250/packages/containerd.io-1.2.0-3.el7.x86_64.rpm: ヘッダー V4 RSA/SHA512 Signature、鍵 ID 621e9f35: NOKEY
Docker CE Stable - x86_64                        12 kB/s | 1.6 kB     00:00
GPG 鍵 0x621E9F35 をインポート中:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
 From       : https://download.docker.com/linux/centos/gpg
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : docker-ce-cli-1:19.03.8-3.el7.x86_64                   1/4
  scriptletの実行中: docker-ce-cli-1:19.03.8-3.el7.x86_64                   1/4
  インストール中   : containerd.io-1.2.0-3.el7.x86_64                       2/4
  scriptletの実行中: containerd.io-1.2.0-3.el7.x86_64                       2/4
  scriptletの実行中: libcgroup-0.41-19.el8.x86_64                           3/4
  インストール中   : libcgroup-0.41-19.el8.x86_64                           3/4
  scriptletの実行中: libcgroup-0.41-19.el8.x86_64                           3/4
  scriptletの実行中: docker-ce-3:18.09.1-3.el7.x86_64                       4/4
  インストール中   : docker-ce-3:18.09.1-3.el7.x86_64                       4/4
  scriptletの実行中: docker-ce-3:18.09.1-3.el7.x86_64                       4/4
  検証             : libcgroup-0.41-19.el8.x86_64                           1/4
  検証             : containerd.io-1.2.0-3.el7.x86_64                       2/4
  検証             : docker-ce-3:18.09.1-3.el7.x86_64                       3/4
  検証             : docker-ce-cli-1:19.03.8-3.el7.x86_64                   4/4

インストール済み:
  docker-ce-3:18.09.1-3.el7.x86_64     libcgroup-0.41-19.el8.x86_64
  containerd.io-1.2.0-3.el7.x86_64     docker-ce-cli-1:19.03.8-3.el7.x86_64

スキップしました:
  docker-ce-3:19.03.8-3.el7.x86_64

完了しました!

※このままだとdnf updateのたびに--nobestをつけないといけなくなります。
 めんどくさいのであればcontainerd.ioをアップデートしたほうがいいかもです。

 

Docker起動、自動起動の有効化

CentOS7と同じDockerの起動・自動起動設定を行います。

$ sudo systemctl start docker
$ sudo systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

  

【CentOS7・8共通】docker-composeインストール

Docker-Composeをインストールします。
※Docker-Compose 1.25.5をインストールしています。最新版はこちらより確認してください。

$ sudo curl -L https://github.com/docker/compose/releases/do
wnload/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-comp
ose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   7250      0 --:--:-- --:--:-- --:--:--  7250
100 16.7M  100 16.7M    0     0  4234k      0  0:00:04  0:00:04 --:--:-- 5375k

 

取得したDocker-Composeに実行権限を付与します。

$sudo chmod +x /usr/local/bin/docker-compose

 

【CentOS7・8共通】Dockerイメージ取得(Mongo、Rocket.Chat)

Mongo

$ sudo docker pull mongo:4.0
4.0: Pulling from library/mongo
fe703b657a32: Pull complete
f9df1fafd224: Pull complete
a645a4b887f9: Pull complete
57db7fe0b522: Pull complete
4f659f7c5a8a: Pull complete
b4b7ff548bb8: Pull complete
67a4fc8b9ac5: Pull complete
4a2afe62084c: Pull complete
665eda6efe5a: Pull complete
42f249afb878: Pull complete
da9817b98263: Pull complete
d52bfe96ec69: Pull complete
5f87759b290c: Pull complete
Digest: sha256:74a364c5a142b1887456289405b4428f6f0aa92c5955b4ff10e477ae2a7795b2
Status: Downloaded newer image for mongo:4.0
docker.io/library/mongo:4.0

 

Rocket.Chat

$ sudo docker pull rocketchat/rocket.chat
Using default tag: latest
latest: Pulling from rocketchat/rocket.chat
c0c53f743a40: Pull complete
743f3f406194: Pull complete
cdca34ec0fad: Pull complete
f88bc91ab251: Pull complete
f26cf0eaff11: Pull complete
9bd2eb381953: Pull complete
Digest: sha256:6808869e4751d95273d468da5efd1262a01f3686bf8d2e8a6603dc6eb995295b
Status: Downloaded newer image for rocketchat/rocket.chat:latest
docker.io/rocketchat/rocket.chat:latest

 

【CentOS7・8共通】Rocket.Chat 構築準備

Rocket.Chatを構築する準備を行います。
※Docker-Composeは/usr/local/binに入れており、PATH設定をしないとsudoでは実行できない(フルパス指定になる)。
そのため、root権限で実行する。(visudo設定すればいいだけですけどね)

$ sudo su -

 

フォルダ作成・Docker-Composeの取得


また、Rocket.Chat公式サイトよりDocker-Composeを取得する。

# mkdir -p /var/www/rocket.chat
# cd /var/www/rocket.chat
# curl -L https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml -o docker-compose.yml

  

※docker-compose.ymlの中身は下記になっていました。(2020/04/19時点)

version: '2'

services:
  rocketchat:
    image: rocketchat/rocket.chat:latest
    command: >
      bash -c
        "for i in `seq 1 30`; do
          node main.js &&
          s=$$? && break || s=$$?;
          echo "Tried $$i times. Waiting 5 secs...";
          sleep 5;
        done; (exit $$s)"
    restart: unless-stopped
    volumes:
      - ./uploads:/app/uploads
    environment:
      - PORT=3000
      - ROOT_URL=http://localhost:3000
      - MONGO_URL=mongodb://mongo:27017/rocketchat
      - MONGO_OPLOG_URL=mongodb://mongo:27017/local
      - MAIL_URL=smtp://smtp.email
#       - HTTP_PROXY=http://proxy.domain.com
#       - HTTPS_PROXY=http://proxy.domain.com
    depends_on:
      - mongo
    ports:
      - 3000:3000
    labels:
      - "traefik.backend=rocketchat"
      - "traefik.frontend.rule=Host: your.domain.tld"

  mongo:
    image: mongo:4.0
    restart: unless-stopped
    volumes:
     - ./data/db:/data/db
     #- ./data/dump:/dump
    command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
    labels:
      - "traefik.enable=false"

  # this container's job is just run the command to initialize the replica set.
  # it will run the command and remove himself (it will not stay running)
  mongo-init-replica:
    image: mongo:4.0
    command: >
      bash -c
        "for i in `seq 1 30`; do
          mongo mongo/rocketchat --eval "
            rs.initiate({
              _id: 'rs0',
              members: [ { _id: 0, host: 'localhost:27017' } ]})" &&
          s=$$? && break || s=$$?;
          echo "Tried $$i times. Waiting 5 secs...";
          sleep 5;
        done; (exit $$s)"
    depends_on:
      - mongo

  # hubot, the popular chatbot (add the bot user first and change the password before starting this image)
  hubot:
    image: rocketchat/hubot-rocketchat:latest
    restart: unless-stopped
    environment:
      - ROCKETCHAT_URL=rocketchat:3000
      - ROCKETCHAT_ROOM=GENERAL
      - ROCKETCHAT_USER=bot
      - ROCKETCHAT_PASSWORD=botpassword
      - BOT_NAME=bot
  # you can add more scripts as you'd like here, they need to be installable by npm
      - EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics
    depends_on:
      - rocketchat
    labels:
      - "traefik.enable=false"
    volumes:
      - ./scripts:/home/hubot/scripts
  # this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
    ports:
      - 3001:8080

  #traefik:
  #  image: traefik:latest
  #  restart: unless-stopped
  #  command: >
  #    traefik
  #     --docker
  #     --acme=true
  #     --acme.domains='your.domain.tld'
  #     --acme.email='your@email.tld'
  #     --acme.entrypoint=https
  #     --acme.storagefile=acme.json
  #     --defaultentrypoints=http
  #     --defaultentrypoints=https
  #     --entryPoints='Name:http Address::80 Redirect.EntryPoint:https'
  #     --entryPoints='Name:https Address::443 TLS.Certificates:'
  #  ports:
  #    - 80:80
  #    - 443:443
  #  volumes:
  #    - /var/run/docker.sock:/var/run/docker.sock

 

Mongo、Rocket.Chatの起動

Mongoのリポジトリ取得・起動

# docker-compose up -d mongo
rocketchat_mongo_1 is ... done
# docker-compose up -d mongo-init-replica
rocketchat_mongo_1 is up-to-date
Creating rocketchat_mongo-init-replica_1 ... done

 

Rocket.Chatのリポジトリ取得・起動

# docker-compose up -d rocketchat
Creating network "rocketchat_default" with the default driver
Creating rocketchat_mongo_1 ... done
Creating rocketchat_rocketchat_1 ... done

 

起動確認

# docker-compose ps
             Name                            Command               State            Ports
--------------------------------------------------------------------------------------------------
rocketchat_mongo-init-replica_1   docker-entrypoint.sh bash  ...   Exit 0
rocketchat_mongo_1                docker-entrypoint.sh mongo ...   Up       27017/tcp
rocketchat_rocketchat_1           bash -c for i in `seq 1 30 ...   Up       0.0.0.0:3000->3000/tcp

 

これでRocket.Chatのインストールは終了です。

 

 

Rocket.Chat 初期設定

http://【IPアドレス】:3000/にアクセスすると管理者情報の設定画面になります。
管理者情報の設定を行います。

ユーザ名は全角入力で次へボタンを押下するとユーザ名のTrueエラー(謎)が発生します。

その場合は画面のリロードして1から入力してください。

また、SMTPでメール送信設定を行っていないサーバの場合、「次へ」を押下すると、しばらく固まります
その場合は再読み込みしたあとログインするか、メール送信が失敗するまでしばらく待ちます。

 

組織情報を入力します。(任意なのでそのままでも可)

  

サイト名とサーバの種類を設定します。
オンプレ環境のみで行う場合はサーバの種類を「プライベート」に設定します。
また、メール送信設定を行わない場合は「Auto opt in new users for Two Factor via Email」をいいえに設定します。

 

オンプレ環境(スタンドアローン)で構築する場合は「次を自分で実施し、スタンドアローン利用する」にチェックを選択します。

 下記画面が表示されるとRocket.Chatの初期設定は終了です。

色々試してみたところうまくいってそう

 

 

最後に

CentOSを入れてから何も弄らずにDocker、Rocket.Chatを入れることができました。
特に、SELinuxが有効になったままサクサクっとインストールできたのが驚きでした。
(SELinux有効にすると嵌ると抜け出すのに一苦労するので・・・)

-サーバー, 開発
-, , ,