UCIDM パッケージ

UCIDM は RPM パッケージで提供します。RPM パッケージの入手方法は弊社のサポート担当者にご確認ください。 実際には install.sh などを同梱した tar.gz ファイルになります。

初回インストールするとき

ここでは 1.0.0-1 というバージョンを例にインストール作業の説明をしますが、適宜お手持ちの最新のバージョンに置き換えて作業してください。

# tar xf osstech-ucidm-1.0.0-1.el9.x86_64.tar.gz
# ls -p
osstech-ucidm-1.0.0-1.el9.x86_64/ osstech-ucidm-1.0.0-1.el9.x86_64.tar.gz
# cd osstech-ucidm-1.0.0-1.el9.x86_64/
# ls -p
install.sh x86_64/
# ./install.sh

基本的には /opt/osstech 配下に各種ファイルがインストールされます。次のコマンドでインストールされた内容を確認できます。

# rpm -ql osstech-ucidm

インストールされるものの主な構成について説明します。

  • /opt/osstech/bin: コマンドラインで使う運用ツール
  • /opt/osstech/etc: ミドルウェアの設定ファイルなど
  • /opt/osstech/share/ucidm: compose.yml を始め、アプリケーションやミドルウェアのサンプルファイルなど
  • /opt/osstech/var/backup/ucidm: ucidm のバックアップディレクトリ
  • /var/opt/osstech/lib/ucidm: compose サービスを管理するホームディレクトリ

ucidm ユーザーの設定

osstech-ucidm をインストールすると ucidm ユーザーが作成されます。docker グループが設定されていることを確認します。

# id ucidm
uid=991(ucidm) gid=991(ucidm) groups=991(ucidm),993(docker)

UCIDM は Docker Compose を使ってコンテナアプリケーションとして動作します。

セキュリティ強化の観点から、コンテナを root ユーザーではなく、非特権ユーザーで実行することが推奨されています。このことを rootless コンテナと呼び、非特権ユーザがコンテナを作成、実行、管理できます。

ここでは非特権ユーザーとして ucidm というユーザー/グループを作成します。お客様の環境ですでに適切なユーザーが存在するときは任意のユーザー/グループをお使いください。

インストール直後はパスワードが未設定になります。任意のパスワードを設定します。

# passwd ucidm
ユーザー ucidm のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

/etc/sudoers の設定

ここでは非特権ユーザーの ucidm が必要に応じて sudo コマンドを実行できるようにします。 これはセキュリティ上とても重要な設定になります。 お客様の環境にあわせて sudoers 設定の可否ならびに設定方法を精査してください。

# visudo
(必要な設定を記述する)

例として ucidm ユーザーに無制限の root 権限を付与すると次のような設定になります。

# grep ucidm /etc/sudoers
ucidm ALL=(ALL) ALL

ucidm ユーザーのログイン確認と docker サービスの初期設定

先ほど設定したパスワードで ucidm でログインできることを確認します。

Docker 社のドキュメントをベースに ucidm ユーザーが docker サービスを起動できるように初期設定します。

dockerd-rootless-setuptool.sh という setup スクリプトが用意されているので実行します。

$ dockerd-rootless-setuptool.sh install
[ERROR] Missing system requirements. Run the following commands to
[ERROR] install the requirements and run this tool again.
[ERROR] Alternatively iptables checks can be disabled with --skip-iptables .

########## BEGIN ##########
sudo sh -eux <<EOF
# Load ip_tables module
modprobe ip_tables
# Add subuid entry for ucidm
echo "ucidm:100000:65536" >> /etc/subuid
# Add subgid entry for ucidm
echo "ucidm:100000:65536" >> /etc/subgid
EOF
########## END ##########

もしこれらのエラーが発生したら、iptables のモジュールロード、ならびに subuid と subgid に ucidm ユーザー/グループを追加します。

$ sudo sh -eux <<EOF
# Load ip_tables module
modprobe ip_tables
# Add subuid entry for ucidm
echo "ucidm:100000:65536" >> /etc/subuid
# Add subgid entry for ucidm
echo "ucidm:100000:65536" >> /etc/subgid
EOF
+ modprobe ip_tables
+ echo ucidm:100000:65536
+ echo ucidm:100000:65536

modprobe コマンドの実行後、再度 setup スクリプトを実行します。

$ dockerd-rootless-setuptool.sh install

実行結果ログに表示されている DOCKER_HOST と次の rootless の DOCKER ENDPOINT が一致していることを確認します。

$ docker context ls
NAME         DESCRIPTION               DOCKER ENDPOINT                    ERROR
default      Current DOCKER_HOST ...   unix:///var/run/docker.sock
rootless *   Rootless mode             unix:///run/user/991/docker.sock

systemd をユーザー権限で実行して docker サービスが起動していることを確認します。

$ systemctl --user status docker
...
   Active: active (running) since Tue 2023-10-03 19:02:33 JST; 4min 35s ago
...

docker コマンドで hello-world コンテナを実行できれば成功です。

$ docker run hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

OS の再起動時に docker サービスが起動する設定になっていることを確認します。

$ systemctl --user is-enabled docker
enabled

OS の再起動時に systemd のユーザーインスタンスが起動するように linger を有効にします。

$ sudo loginctl enable-linger ucidm
$ loginctl show-user ucidm
UID=991
GID=991
Name=ucidm
Timestamp=Thu 2025-01-30 10:58:10 JST
TimestampMonotonic=110923418
RuntimePath=/run/user/991
Service=user@991.service
Slice=user-991.slice
Display=3
State=active
Sessions=3
IdleHint=no
IdleSinceHint=1738202488092508
IdleSinceHintMonotonic=308110904
Linger=yes

パッケージのアップグレード

アップグレード前に一度バックアップを取得することを推奨します。 バックアップの取得方法は バックアップ の項を参照してください。

アップグレード前に既存サービスを停止させます。

$ docker compose --file /var/opt/osstech/lib/ucidm/compose.yml down

新しいバージョンの install.sh を実行してください。

# tar xf osstech-ucidm-1.0.0-2.el9.x86_64.tar.gz
# ls -p
osstech-ucidm-1.0.0-2.el9.x86_64/ osstech-ucidm-1.0.0-2.el9.x86_64.tar.gz
# cd osstech-ucidm-1.0.0-2.el9.x86_64/
# ./install.sh

バージョンが上がったことを確認してください。

# rpm -q osstech-ucidm
osstech-ucidm-1.0.0-2.el9.x86_64

パッケージのダウングレード

コンテナが起動中の場合は一度停止してください。

$ docker compose --file /var/opt/osstech/lib/ucidm/compose.yml down

古いバージョンの tar.gz ファイル内に含まれるrpmファイルを直接指定してダウングレードします。

# tar xf osstech-ucidm-1.0.0-1.el9.x86_64.tar.gz
# ls -p
osstech-ucidm-1.0.0-1.el9.x86_64/ osstech-ucidm-1.0.0-1.el9.x86_64.tar.gz
# cd osstech-ucidm-1.0.0-1.el9.x86_64/x86_64/
# dnf downgrade osstech-ucidm-1.0.0-1.el9.x86_64.rpm

ダウングレード出来たことを確認してください。

# rpm -q osstech-ucidm
osstech-ucidm-1.0.0-1.el9.x86_64