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?

devcontainer で余計なソケットを作りたくないなら devcontainer CLI を使うほうがいい

0
Last updated at Posted at 2026-04-04

ドキュメントに基づいた情報ではなく、実際に試したことを書いています。

間違いやより便利で安全な方法があれば教えてください🙇

概要

ソケット 用途
vscode-ssh-auth-*.sock SSH Agent Forwarding
vscode-git-*.sock Git 認証情報(HTTPS トークン)の転送
vscode-ipc-*.sock VS Code 拡張機能とサーバー間の通信
vscode-remote-containers-ipc-*.sock Dev Containers 拡張とコンテナ間の制御通信

VS Code で devcontainer を開くと、コンテナの /tmp に以下のソケットが自動で作成されます。これらはホストとコンテナを繋ぐ便利な仕組みです。

普段はそこまで気にすることはありませんが、Claude Code などを自動実行モードで動かす場合にセキュリティ的に考慮すべきポイントが増えます。これらのソケットはコンテナ内のプロセスからアクセス可能であり、アタックサーフェスとなるリスクがあるためです。

本記事は、Dev Container CLIを使った場合にどうなるかを検証してみたものです。
「余計なソケットを作りたくないなら devcontainer CLI を使うほうがいい」というのが私の結論になります。

devcontainer CLI の基本コマンド

検証時に使ったコマンドを記載します。

# ターミナルセッション中だけ有効
# ワークスペースのパスを環境変数に入れておくと楽になります。
export WORKSPACE=/path/to/project
# インストール
npm install -g @devcontainers/cli

# コンテナを起動
devcontainer up --workspace-folder $WORKSPACE

# コンテナを起動してそのままシェルに入る
devcontainer up --workspace-folder $WORKSPACE && docker exec -it $(docker ps -q --filter "label=devcontainer.local_folder=$WORKSPACE") bash

# コンテナを停止
docker stop $(docker ps -q --filter "label=devcontainer.local_folder=$WORKSPACE")

# コンテナを削除(停止済みの場合)
docker rm $(docker ps -aq --filter "label=devcontainer.local_folder=$WORKSPACE")

# 停止と削除をまとめて行う場合
docker rm -f $(docker ps -aq --filter "label=devcontainer.local_folder=$WORKSPACE")

devcontainer CLI で起動した場合

devcontainer CLI で起動したコンテナに docker exec で入った場合、/tmp にソケットは存在しません。

devcontainer up --workspace-folder $WORKSPACE
docker exec -it $(docker ps -q --filter "label=devcontainer.local_folder=$WORKSPACE") bash

# ここからコンテナの中
ls -la /tmp
# total 8
# drwxrwxrwt 1 root root 4096 ...  .
# drwxr-xr-x 1 root root 4096 ...  ..

VS Code 接続後はソケットが残り続ける

一度 VS Code で開いたコンテナは、VS Code を閉じてもソケットファイルが /tmp に残ります。コンテナを削除しない限り消えません。

VS Code で開く → ソケット作成 → VS Code を閉じる → ソケットは残る

確認手順

  1. VS Code を使ってdevcontainerを開く
  2. "Reopen Folder Locally" でローカルに戻す(コンテナは停止して残る)
  3. コンテナを起動して /tmp を確認する
# コンテナを起動
docker start $(docker ps -aq --filter "label=devcontainer.local_folder=$WORKSPACE")

# /tmp を確認(ソケットが残っているはず)
docker exec $(docker ps -q --filter "label=devcontainer.local_folder=$WORKSPACE") ls /tmp

/tmpを空にしたい場合

VS Code で一度開いたコンテナの /tmp を空にしたい場合は、コンテナを削除してから devcontainer CLI で起動し直す必要があります。

# コンテナを削除
docker rm -f $(docker ps -aq --filter "label=devcontainer.local_folder=$WORKSPACE")

# devcontainer CLI で起動し直す
devcontainer up --workspace-folder $WORKSPACE

まとめ

起動・接続方法 /tmp のソケット
VS Code で開く SSH・Git・IPC など複数作成される
devcontainer CLI + docker exec 作成されない

Claude Code のようなエージェントをコンテナ内で動かす場合、VS Code 経由で開くとホストの SSH 鍵や Git 認証情報がコンテナから利用できる状態になります。リスクを最小化したいなら devcontainer CLI + docker exec の組み合わせが選択肢になります。

SSHを利用する場合は、一度クリーンな状態にしてから必要な設定のみを明示的に行う方が安全です。

自分が書いた関連記事

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?