CentOS7のような古いLinux OSで、systemctlを利用したサービス起動を行うDocker 設定(for Mac)

CentOS7のような古いLinux OSで、systemctlを利用したサービス起動を行うDocker 設定(for Mac)

2023年10月15日 オフ 投稿者: KYO
Table of Contents

※Dockerの環境や、ホスト側の必要な設定は終わってる前提としてます

以下、備忘。

背景/経緯

通常、Dockerコンテナは1プロセスで、1サービスを前提として構築してます。
そういう方は、多いんだろうなーと思ってます。
コンテナイメージの最小化や、依存関係を考慮すると、その方が理想的で、かつベストプラクティスでもあるので。

今回、古い環境を丸ごと複数稼働させて、検証・configの確認などを行いたかったので、Docker環境で先行して検証することに。
以前だと、仮想OSで組んでましたが、効率が悪すぎるので。もはや、仮想OSはほぼ使わなくなりました。

Dockerの利点

色々ありますが、バージョンアップの検証には 結構、いい と思ってます。
特に、WebやDB。
既存の構成を大きく変えずに、起動するコンテナを切り替えるだけで、(厳密には、変更点を .env に集約したり、docker-compose.yml で差異を吸収してます)、下位互換を確認しながら対応が出来る、という点で。

で、結論

Mac環境であれば、以下を変更して Docker自体を再起動。
以上で、解消。

$ systemctl status httpd

Failed to get D-Bus connection: No such file or directory

上のように、起動できなかったsystemctlコマンドが、
無事実行できると思います。

grep 'deprecatedCgroupv1' ~/Library/Group\ Containers/group.com.docker/settings.json
  "deprecatedCgroupv1": false,

vim ~/Library/Group\ Containers/group.com.docker/settings.json

"deprecatedCgroupv1": true,        // true に変更

WIndows環境でも、類似した設定ファイルがあると思うので、その設定を変更すればOKかと。

本来なら、systemd 247以上のバージョンが使えるOSであれば、コンテナ側のOSで対応することも可能。