Docker for Mac 4.18 で再び Failed to get D-Bus connection エラーが出たときの対処法

# 結論
* Dockerfile で `/sys/fs/cgroup` の Volume をマウント
* docker-compose.yml で `cgroup: host` を設定

# 環境

## Mac
* OS: Mac OS X Monterey 12.6.3
* チップ: Apple M1 Max
* メモリ: 64GB

## Docker
* Docker Desktop for Mac 4.18.0
* Base Docker Image: amazonlinux:2

# systemctl が利用できない
Docker for Mac で開発していて 4.3 になった際に cgroup の扱いが V2 に変わり Apache が起動しない、systemctl が使えないと悩まされました。
実際に Docker にログインすると下記のエラーが出て systemctl を実行すると D-Bus の Connection が作成できないエラーが出ていました。

```
bash-4.2# systemctl status httpd
Failed to get D-Bus connection: No such file or directory
```

その時は下記記事で語られているように `"deprecatedCgroupV1": true` を設定することで systemctl が利用できるようになりました。
[Docker for mac (ver 4.3以降) で「Failed to get D-Bus connection」エラーが出たときの対処法](https://qiita.com/NaoyaMiyagawa/items/22a870112377a91e1c99)

しかしながら　Docker for Mac 4.18 で `"deprecatedCgroupV1": true` を設定していても `Failed to get D-Bus connection` が出たのでその対処法を探しました。

# Docker for Mac 4.18 での対処法
## Dockerfile の変更

Docker Container の `/sys/fs/cgroup` を読み書き可能な Volume を Mount する
```
FROM amazonlinux:2

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
  systemd-tmpfiles-setup.service ] || rm -f $i; done); \
  rm -f /lib/systemd/system/multi-user.target.wants/*;\
  rm -f /etc/systemd/system/*.wants/*;\
  rm -f /lib/systemd/system/local-fs.target.wants/*; \
  rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
  rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
  rm -f /lib/systemd/system/basic.target.wants/*;\
  rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
```

こちらの記事を参考にしています。
[M1 Mac centos:7 Failed to get D-Bus connection: No such file or directory](https://forums.docker.com/t/m1-mac-centos-7-failed-to-get-d-bus-connection-no-such-file-or-directory/132257)

## docker-compose.yml の変更

`cgroup: host` の設定を追加する

```
version: "3.3"
services:
  web:
    build: .
    ports:
      - 8080:80
      - 4430:443
    privileged: true
    platform: linux/x86_64
    cgroup: host　# この行を追加
```

## 注意点
起動してすぐは D-Bus に接続することができないため Docker Container 起動後30秒（環境によると思います）ほど様子をみてください。
```
bash-4.2# while true; do systemctl status httpd; sleep 1; done 
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
Failed to get D-Bus connection: No such file or directory
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd.service(8)
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd.service(8)
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-04-08 20:00:20 JST; 843ms ago
     Docs: man:httpd.service(8)
 Main PID: 308 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─308 /usr/bin/qemu-x86_64 /usr/sbin/httpd /usr/sbin/httpd -DFOREGROUND
           ├─315 /usr/bin/qemu-x86_64 /usr/sbin/httpd /usr/sbin/httpd -DFOREGROUND
           ├─317 /usr/bin/qemu-x86_64 /usr/sbin/httpd /usr/sbin/httpd -DFOREGROUND
           ├─319 /usr/bin/qemu-x86_64 /usr/sbin/httpd /usr/sbin/httpd -DFOREGROUND
           ├─321 /usr/bin/qemu-x86_64 /usr/sbin/httpd /usr/sbin/httpd -DFOREGROUND
           └─323 /usr/bin/qemu-x86_64 /usr/sbin/httpd /usr/sbin/httpd -DFOREGROUND
```