Docker Compose

UCIDM は Docker Compose を使って複数のアプリケーションやミドルウェアを管理します。そのため、UCIDM をインストールするには Docker と Docker Compose もインストールする必要があります。またセキュリティ強化の観点から rootless コンテナの導入を推奨します。

Docker 社のドキュメントをベースにインストールの手順を説明します。

Docker 社のパッケージはバージョンによって変わる可能性があります。適切なパッケージがみつからない場合は Docker 社のドキュメントを参考にしてください。

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

Docker 社が提供するリポジトリ設定を取得します。

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

Docker 関連のモジュールをインストールします。

$ sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin fuse-overlayfs iptables

docker グループを作成して非特権ユーザー (ucidm) に設定します。

$ sudo groupadd docker
$ sudo usermod -aG docker ucidm

ucidm ユーザーでログインします。

$ whoami
ucidm
$ groups
docker ucidm

subuid と subgid に ucidm ユーザー/グループが存在することを確認します。

$ grep ^$(whoami): /etc/subuid
ucidm:100000:65536
$ grep ^$(whoami): /etc/subgid
ucidm:100000:65536

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
EOF
########## END ##########

もし iptables のモジュールに関してこのようなエラーが発生したら指示の通り、次のように実行します。

$ sudo sh -eux <<EOF
> # Load ip_tables module
> modprobe ip_tables
> EOF

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

$ dockerd-rootless-setuptool.sh install

DOCKER_HOST の環境変数が表示されているはずです。この設定を .bashrc の最後に追加します。

$ vi ~/.bashrc
...
export DOCKER_HOST=unix:///run/user/1000/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=1000
GID=1000
Name=ucidm
Timestamp=Fri 2023-09-29 02:51:20 EDT
TimestampMonotonic=2118735295
RuntimePath=/run/user/1000
Service=user@1000.service
Slice=user-1000.slice
Display=9
State=active
Sessions=9
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
Linger=yes

アップグレードするとき

通常の dnf コマンドのアップグレードを実行してください。

$ sudo dnf upgrade -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin