【第1回】OpenClawをDocker環境で安全に動かす──Anthropic APIキーの設定からチャット開始まで
こんにちは、アンドドットCTOをしている高根沢です。
最近社内でも話題になっている OpenClaw。GitHub スター数250k超(2026/03/04時点)のオープンソース AI アシスタントフレームワークで、Slack・Discord・Telegram など普段使っているチャットツール上で AI エージェントを動かせるのが特徴となっています。
ただ、AI エージェントをホストマシンに直接インストールして動かすのは正直怖いですよね。ファイルシステムへのアクセスやコマンド実行を AI に委ねるわけですから、何かやらかしたときの被害範囲を限定したいというのが本音です。
そこで今回は、Docker 環境で OpenClaw を安全に動かす手順を紹介したいと思います。また、公式の docker-setup.sh ではなく、alpine/openclawイメージを使った Dockerコンテナと設定ファイルで構成をコントロールする方法で進めていきます(設定の中身が見えるので、何が起きているか把握しやすいのがメリットです)
なお、今回使用した構成ファイル一式は GitHub で公開しています。
シリーズ構成
| 回 | 内容 | 作業ディレクトリ |
|---|---|---|
| 第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つのサービスで構成されています。
設定ポイントは以下
-
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.json の agents.defaults.model.primary を編集して変更できます。(例えば: anthropic/claude-opus-4-6など)
変更後、ボリュームを再作成して反映します。
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 start→make doctor --fix→make askで3コマンドでチャット開始できた - リソース制限(
memory: 2G/cpus: 1.0)を入れておくと安心感がある
次回は、ここで立ち上げた OpenClaw に Slack を接続して、チームのチャンネルから直接 AI エージェントに話しかけられる環境を作っていこうと思います。Slack App Manifest を使った Bot の作成手順や、Socket Mode での接続設定を紹介する予定です。
Discussion