世界を動かす技術を、日本語で。

Docker内でのClaude CodeおよびVSCodeへの切り替え

2025年7月12日原文(timsh.org)

概要

  • Claude CodeをDockerとVSCode Dev Containerで運用する方法の紹介
  • 旧AIコーディング環境からの移行理由と利点の整理
  • セキュリティとコスト面の現実的な選択
  • 導入手順とGitHub連携の実践的ガイド
  • リスク低減策と今後の改善案への言及

Claude CodeをDocker+VSCode Dev Containerで使う理由

  • 従来環境 :ChatGPT PlusとCursor Proの併用、月額合計40ドルのサブスクリプション
  • 不満点
    • コスト の割に利用頻度が低い
    • Cursorのレスポンス遅延 とリクエスト制限の変更
    • セキュリティリスク :AIエージェントがローカル環境全体へアクセス可能な点
  • Claude Codeへ移行 の決断理由
    • 月額20ドルでコスト削減
    • Webチャット体験 も良好
    • トークン消費の明確化 と適度な利用制限
    • CLIやVSCode連携による快適な開発体験
  • セキュリティ対策 としてのDocker利用
    • コンテナ内にClaude Codeを閉じ込めることで ローカル資産の保護
    • プロジェクト単位での アクセス制限 が可能

Claude CodeをDocker+VSCodeでセットアップする手順

  • 前提条件
    • DockerVSCode がインストール済み
    • Claude有料プラン契約
    • GitHubアカウントの利用(基本セットアップには不要)
  • セットアップ手順
    • プロジェクト用のルートフォルダを作成
    • その中に .devcontainer フォルダを作成
    • devcontainer.json ファイルを配置(GitHubリポジトリをクローン推奨)
      • git clone https://github.com/tim-sha256/claude-in-docker.git
    • VSCodeでルートフォルダを開き、「 Reopen in Container」を選択
    • ターミナルでclaudeコマンドが動作するか確認

GitHub連携とセキュリティ強化

  • SSHキーの代替策 として Fine-Grained Personal Access Token を利用
    • 最小限の権限 (RepositoryのContents: Read and writeのみ)でトークン発行
      • https://github.com/settings/personal-access-tokens/new で作成
    • クローンpush/pull 時にトークンを使って認証
      • git clone https://<USERNAME>:<TOKEN>@github.com/<USERNAME>/<REPO-NAME>.git
      • git remote set-url origin https://<USERNAME>:<TOKEN>@github.com/<USERNAME>/<REPO-NAME>.git
  • Claude Code からGitHubアカウントへの不正操作リスクを大幅低減

まとめと今後

  • この構成 は多くの一般ユーザーにとって 十分実用的で安全
  • より良い方法や改善案があれば コメントやメール で情報提供を歓迎
  • コスト・セキュリティ・利便性 のバランスを重視した現実的なAIコーディング環境の提案

連絡先 :hello@timsh.org(ご意見・ご感想歓迎)

Hackerたちの意見

VSCodeが嫌いな人(私みたいに)には、オープンソースでMicrosoftが作った公式のdevcontainer CLI [0]を使うと、同じことができるよ。これ、VSCodeが裏で使ってるやつなんだ。自動ポートフォワーディングはできないから、SSHエージェントフォワーディングも含めて、devcontainerにSSHをインストールするか、他のツールを使う必要があるかも。ポートフォワーディング用のツール [1]を作ったんだけど、VSCodeみたいに魔法みたいにはしたいけど、今のところ自分の目的には合ってるから、あんまり手をかけてないんだ。これを使えば、devserverにSSH接続して、devcontainer CLIを使ってiTerm2のTmux統合でtmuxセッションを開けるから、まるでローカルのウィンドウみたいに感じるよ。NeovideとリモートNeovimを同じチャンネルで組み合わせれば、近くのデータセンターにあるリモートdevcontainerでネイティブな感じの開発環境ができるんだ。[0] https://github.com/devcontainers/cli [1] https://gitlab.com/CGamesPlay/qtm

ありがとう!

devpodはこれにとても良いよね。https://devpod.sh/

コマンドにはCLIが好きだけど、雰囲気を楽しむためにはエージェントチャットインターフェースで作業したいな。残念ながら、これにどんどん依存してきてるけど、大きなプロジェクトでトラブルになったこともある。ローカルには多くの環境があって、いくつかは他の環境に依存してるし、ローカルデータベースが必要なものもある。プロダクションではコンテナを使ってるけど、ローカルではいつもそうじゃない。完全に隔離された開発環境を設定するのはほぼ地獄だよ。将来的にClaudeが俺の開発セットアップをk8sで隔離されたものに変換してくれるかもしれないけど、アプリやサービスをすべてローカルで動かす力はない。開発環境をクラウドに設定する必要があるけど、それに払うお金が足りないし、状況によってはローカルで動かさなきゃいけないものもあるから、うまくいかない。だから、Cursor AIをいろんなMCPサーバーと一緒に動かして、ツールの呼び出しを承認してるけど、隔離はしてないし、これがいつか痛い目に合うって分かってる。

サーバーにSSHで入って、devcontainer CLIツールを使ってdevコンテナ内でシェルを開いてる。コンテナごとにSSHをインストールするより、こっちの方が楽だし、コンテナがたくさんあるときは特にね。プロセスを助けるためにシンプルなコマンドラインツールを作ったから、長いコマンドを打たなくて済むんだ。それを実行すると、動いているdevコンテナがリストされて、各コンテナに番号を付けるから、フルIDを使わなくてもいい。

これありがとう。こんなのが出てたなんて知らなかったよ。

VSCodeが嫌いな人(私みたいに)は、VSCodeを嫌う理由は何?

Claude Codeをコンテナで動かすのが楽しいよ。私にとって一番の利点はセキュリティじゃなくて、バックグラウンドでエージェントを簡単に立ち上げられることなんだ。作業ディレクトリをコンテナにコピーして、Claude Codeを呼び出すシンプルなスクリプトを使ってるんだけど、その後はローカルにプランニングドキュメントを保存するか、GitHubでプルリクエストを開いてレビューするだけ。アイデアが浮かんだときにエージェントを立ち上げるのがすごくスムーズだから、結果を簡単に捨ててやり直せるのが気に入ってる。Maxプランのおかげで、このプロセス全体のコストを心配しなくて済むのもいいね。最初は慎重にコンテナを設定してたけど、正直言って、Claude Codeがgitで簡単に元に戻せないことをしたのを見たことがないから、もうあんまり心配してないよ。

スクリプトを共有する興味はある?

ローカルでも、複数のターミナルタブやウィンドウでClaudeが異なるタスクを並行してこなせるよ。

複数のgitワークツリーを設定するのも試した?それで大体の問題が解決するんじゃないかな。

こうして、機械は人間に対して無害であることへの信頼を築くことができた。これが最終的には有利になることが分かるんだよね。

Hacker Newsで議論の続きを見る