🦞

【第1回】OpenClawをDocker環境で安全に動かす──Anthropic APIキーの設定からチャット開始まで

に公開

こんにちは、アンドドットCTOをしている高根沢です。

最近社内でも話題になっている OpenClaw。GitHub スター数250k超(2026/03/04時点)のオープンソース AI アシスタントフレームワークで、Slack・Discord・Telegram など普段使っているチャットツール上で AI エージェントを動かせるのが特徴となっています。

https://github.com/openclaw/openclaw

ただ、AI エージェントをホストマシンに直接インストールして動かすのは正直怖いですよね。ファイルシステムへのアクセスやコマンド実行を AI に委ねるわけですから、何かやらかしたときの被害範囲を限定したいというのが本音です。

そこで今回は、Docker 環境で OpenClaw を安全に動かす手順を紹介したいと思います。また、公式の docker-setup.sh ではなく、alpine/openclawイメージを使った Dockerコンテナと設定ファイルで構成をコントロールする方法で進めていきます(設定の中身が見えるので、何が起きているか把握しやすいのがメリットです)

なお、今回使用した構成ファイル一式は GitHub で公開しています。

https://github.com/p0x0q/openclaw-hands-on

シリーズ構成

内容 作業ディレクトリ
第1回(本記事) Docker + Anthropic API キーでコンテナ内でチャットする step1-docker-setup

前提条件

要件 バージョン
Docker Desktop or Docker Engine 最新安定版
Docker Compose v2 以上docker compose コマンド形式)
メモリ 2GB 以上(コンテナに limits: memory: 2G を設定します)
ディスク 5GB 以上の空き
Anthropic API キー sk-ant- で始まるもの

1. ハンズオンリポジトリをクローンする

git clone https://github.com/p0x0q/openclaw-hands-on.git
cd openclaw-hands-on/step1-docker-setup

ディレクトリ構成はこうなっています。

step1-docker-setup/ (今回作業するディレクトリです。makeコマンドなどはこちらで実行すること。)
├── docker-compose.yml      # 2つのサービス(init + gateway)
├── configs/
│   ├── openclaw.json       # エージェント設定
│   └── agents/             # カスタムエージェント定義(任意)
├── .env.example            # 環境変数テンプレート
└── Makefile                # よく使うコマンドのショートカット

2. Anthropic API キーを取得する

Anthropic Console にログインし、API キーを発行します。

発行されたキーは sk-ant-api03-... のような形式です。一度しか表示されないので、安全な場所に控えておいてください。

3. .env を作成する

cp .env.example .env

.env を開いて、取得した API キーを設定します。

ANTHROPIC_API_KEY=sk-ant-api03-ここに自分のキーを貼る

4. docker-compose.yml の構成を理解する

今回の docker-compose.yml は2つのサービスで構成されています。

https://github.com/p0x0q/openclaw-hands-on/blob/main/step1-docker-setup/docker-compose.yml

設定ポイントは以下

  • init コンテナ: openclaw-init が先に実行され、設定ファイルを共有ボリュームにコピーしてから本体が起動する
  • ポート 18789: ゲートウェイ UI + API のアクセス先
  • restart: unless-stopped: 異常終了時に自動復旧

5. 起動する

make start

(Makefile を使わない場合は docker compose up

実際の出力はこうなりました。

$ make start
docker compose up
[+] Running 2/0
 ✔ Container openclaw-init    Creat...                           0.0s 
 ✔ Container openclaw-server  Cre...                             0.0s 
Attaching to openclaw-init, openclaw-server
openclaw-init exited with code 0
...
openclaw-server  | 2026-03-04T14:12:33.425Z [heartbeat] started
openclaw-server  | 2026-03-04T14:12:33.428Z [health-monitor] started (interval: 300s, grace: 60s)
openclaw-server  | 2026-03-04T14:12:33.430Z [gateway] agent model: anthropic/claude-sonnet-4-5
openclaw-server  | 2026-03-04T14:12:33.430Z [gateway] listening on ws://127.0.0.1:18789, ws://[::1]:18789 (PID 14)
openclaw-server  | 2026-03-04T14:12:33.431Z [gateway] log file: /tmp/openclaw/openclaw-2026-03-04.log
openclaw-server  | 2026-03-04T14:12:33.443Z [browser/server] Browser control listening on http://127.0.0.1:18791/ (auth=token)

init コンテナが正常終了(Exited)してから、openclaw-server が起動しています。

6. 動作確認する

コンテナの状態確認

make status
NAME              IMAGE                       STATUS         PORTS
openclaw-server   alpine/openclaw:2026.2.26   Up 4 seconds   0.0.0.0:18789->18789/tcp

ヘルスチェック

make doctor

初回は警告が出ることがあります。

◇  State integrity
│  - CRITICAL: Session store dir missing
│    (~/.openclaw/agents/default/sessions).

--fix を付けて修復します。

docker exec openclaw-server npx openclaw doctor --fix
Session store (default): .../sessions.json (0 entries)
└  Doctor complete.

実際にチャットしてみる

ワンショットで質問を投げてみます。

make ask MSG="Hello, please respond with a short greeting."
Hey! How are you doing?

Claude が応答しました。Anthropic API 経由で claude-sonnet-4-5 が動いています(ログで確認できます)。
今回は、まだチャネルの設定をしていないため、CLIなどの呼び出しだけになります。

make logs

7. モデルを変更する(任意)

デフォルトでは claude-sonnet-4-5 が設定されています。configs/openclaw.jsonagents.defaults.model.primary を編集して変更できます。(例えば: anthropic/claude-opus-4-6など)

https://github.com/p0x0q/openclaw-hands-on/blob/main/step1-docker-setup/configs/openclaw.json

変更後、ボリュームを再作成して反映します。

docker compose down -v   # ボリューム削除
make start               # 再起動(init コンテナが新しい設定をコピー)

Docker で動かすことの安全性

ここまでの手順で OpenClaw は Docker コンテナ内に閉じ込められた状態で動いています。

リスク Docker なし Docker あり
ファイル誤削除 ホスト全体に影響 コンテナ内 + マウント先のみ
暴走プロセス ホストの CPU/メモリを圧迫 memory: 2G / cpus: 1.0 で制限
環境汚染 Node.js/npm がホストに残る コンテナ削除で完全クリーン

Makefile コマンド早見表

その他、ハンズオンリポジトリに含まれるmakeコマンドについてまとめておきます。

コマンド 説明
make start コンテナ起動(フォアグラウンド)
make stop コンテナ停止
make logs ログ表示
make status コンテナ状態確認
make doctor ヘルスチェック
make chat TUI でインタラクティブチャット
make ask MSG="..." ワンショットで質問

まとめ

今回は OpenClaw を Docker 環境で安全に立ち上げ、Anthropic API キーを使って Claude とチャットするところまでを進めました。

実際にやってみた所感としては:

  • 公式の Docker イメージ alpine/openclaw が用意されているので、ローカルビルド不要ですぐ動く (ただ、イメージサイズもかなり大きいので時間かかるのと、脆弱性アップデート対応などはかなり大変そう)
  • init コンテナパターンで設定ファイルを注入する構成は、K8s への移行も見据えやすい
  • make startmake doctor --fixmake ask3コマンドでチャット開始できた
  • リソース制限(memory: 2G / cpus: 1.0)を入れておくと安心感がある

次回は、ここで立ち上げた OpenClaw に Slack を接続して、チームのチャンネルから直接 AI エージェントに話しかけられる環境を作っていこうと思います。Slack App Manifest を使った Bot の作成手順や、Socket Mode での接続設定を紹介する予定です。

アンドドット テックブログ

Discussion