0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacBook M3で発生する`Failed to allocate manager object, freezing.`の解決方法

Posted at

Failed to allocate manager object, freezing.のエラー発生

MacBook M3でDockerコンテナを実行する際に、以下のようなエラーメッセージが表示されて、コンテナが起動できない事象が発生しました。

Failed to allocate manager object, freezing.

どうやら、このエラーはsystemdが必要なリソースにアクセスできないために発生しているようでした。
※特に、cgroupsに関連する問題が原因。

本記事では、このエラーの原因と解決方法について説明していきます。

エラーの原因

Failed to allocate manager object, freezing. のエラーは、以下の理由で発生します。

  1. cgroupsへのアクセス不足:
    • systemdcgroupsを使用してリソース管理を行っています。なので、cgroupsへのアクセスが不足していると、systemdは正常に初期化することができません。
  2. 必要なシステム権限の不足:
    • systemdはシステム管理権限が必要です。なので、SYS_ADMIN権限が不足していると、systemdは正常に動作することができません。

解決方法

このエラーを解決するために、docker-compose.ymlファイルを以下のように変更します。

1. docker-compose.ymlの修正

docker-compose.ymlファイルに以下の変更を加えます。

version: ********

services:
  reditor:
    container_name: ********
    build: ********
    environment:
      ~略~
      container: docker    # 追加
    volumes:
      ~略~
      - /sys/fs/cgroup:/sys/fs/cgroup:ro    # 追加
    privileged: true
    platform: linux/amd64
    cap_add:
      - SYS_ADMIN    # 追加
    command: ~略~
    restart: always
    ports: ~略~
    stdin_open: true
    tty: true

変更点の説明

1. container: dockerの追加

environmentセクションにcontainer: dockerを追加します。これにより、コンテナがDocker環境で実行されていることを明示的に設定して、コンテナ内での環境設定を行うようにします。

2. volumes/sys/fs/cgroup:/sys/fs/cgroup:roの追加

この設定は、ホストシステムのcgroupファイルシステムをコンテナ内にマウントします。これにより、コンテナがcgroupsを正しく認識できるようになり、systemdcgroupsにアクセスできるようになります。

3. cap_addSYS_ADMINの追加

SYS_ADMIN権限を追加することで、コンテナがシステム管理操作を実行できるようになります。systemdやその他のシステムサービスが正常に動作するためには、この権限が必要です。

2. Docker Engineの設定変更

Docker Desktopの設定でexec-optsを以下の手順で追加します。

  1. Docker Desktopを開く:

    • MacのアプリケーションフォルダからDocker Desktopを開く。
  2. 設定を開く:

    • 画面右上の歯車アイコンをクリックして設定を開く。
  3. Docker Engine設定の編集:

    • 左側のメニューから「Docker Engine」を選択する。
    • 現在の設定を以下のように編集する。

Docker Engineの設定例:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "exec-opts": ["native.cgroupdriver=cgroupfs"]    # 追加
}
  1. 設定を保存して再起動:
    • 設定を保存して、Docker Desktopを再起動する。

まとめ

これらの手順を実行することで、MacBook M3上でdocker-compose upが正常に動作するはずです。

MacBook M3でdocker-compose upを実行する際に発生するFailed to allocate manager object, freezing. エラーは、cgroupsと必要なシステム権限の不足が原因です。docker-compose.ymlファイルの設定を適切に変更し、Docker Engineの設定を更新することで、この問題を解決できます。

インターネット上の記事を探しても、chatGPTに尋ねても、この問題を
docker-composeコマンドを使って解決する情報が見当たらなかったので、
記事として残します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?