🚀 VS Code で で入手しましょう!

実行中のコンテナーにアタッチする

Visual Studio Code はコンテナーを作成して起動できますが、それがワークフローに合わない場合や、すでに実行中の Docker コンテナーに VS Code を「アタッチ」することを好む場合があります。起動方法に関係なく、アタッチすると、devcontainer.json を使用してコンテナー内のフォルダーを開く場合と同様に、拡張機能をインストール、編集、およびデバッグできます。

Docker コンテナーにアタッチする

Docker コンテナーにアタッチするには、コマンドパレット (F1) から [Dev Containers: 実行中のコンテナーにアタッチ...] を選択するか、アクティビティバーの Remote Explorer を使用し、コンテナー ビューから、接続するコンテナーの コンテナーにアタッチ インラインアクションを選択します。

Containers Explorer screenshot

注: Alpine Linux コンテナーを使用する場合、一部の拡張機能は、拡張機能内のネイティブコードの glibc 依存関係が原因で動作しない場合があります。

アタッチされたコンテナーの構成ファイル

VS Code は、特定の Docker コンテナーに繰り返し接続する際のセットアップを高速化するために、イメージまたはコンテナー名レベルの構成ファイルをサポートしています。アタッチ後、フォルダーを開いたり、拡張機能をインストールしたり、ポートを転送したりするたびに、ローカルのイメージ固有の構成ファイルが自動的に更新され、設定が記憶されます。これにより、再度アタッチすると、すべてが正しい場所に戻ります。

  • 既定では、イメージレベルの構成が使用されます。アタッチ後に表示または更新するには、コマンドパレット (F1) から [Dev Containers: コンテナー構成ファイルを開く] を選択します。

  • 構成をコンテナー名に関連付けたい場合は、アタッチ後にコマンドパレット (F1) から [Dev Containers: 名前付き構成ファイルを開く] を選択します。この時点からの更新は、イメージレベルではなく、この名前レベルの構成に適用されます。

これらのファイルは両方とも、devcontainer.json プロパティのサブセットをサポートしています。

{
  // Default path to open when attaching to a new container.
  "workspaceFolder": "/path/to/code/in/container/here",

  // Set *default* container specific settings.json values on container create.
  "settings": {
    "terminal.integrated.defaultProfile.linux": "bash"
  },

  // Add the IDs of extensions you want installed when the container is created.
  "extensions": ["dbaeumer.vscode-eslint"],

  // An array port numbers to forward
  "forwardPorts": [8000],

  // Container user VS Code should use when connecting
  "remoteUser": "vscode",

  // Set environment variables for VS Code and sub-processes
  "remoteEnv": { "MY_VARIABLE": "some-value" }
}

プロパティと用途の完全なリストについては、アタッチされたコンテナー構成リファレンスを参照してください。

保存すると、同じイメージ/コンテナー名で初めてコンテナーを開くたびに、これらのプロパティが環境の構成に使用されます。

ヒント: 構成に問題がある場合は、コマンドパレット (F1) から [Dev Containers: アタッチされたコンテナー構成ファイルを開く...] を選択し、表示されたリストからイメージ/コンテナー名を選択することで、コンテナーにアタッチしていないときにも編集できます。

最後に、アタッチするコンテナーに関係なくインストールする拡張機能がある場合は、settings.json を更新して、常にインストールされる拡張機能のリストを指定できます。

アタッチされたコンテナーの構成リファレンス

アタッチされたコンテナー構成ファイルは、devcontainer.json と同様であり、そのプロパティのサブセットをサポートしています。

プロパティ 説明
workspaceFolder string コンテナーに接続するときに VS Code が開く既定のパスを設定します (多くの場合、ソースコードがコンテナー内にあるボリュームマウントへのパス)。既定では設定されていません (空のウィンドウが開きます)。
extensions array コンテナーの作成時にコンテナー内にインストールする必要がある拡張機能を指定する拡張機能 ID の配列。既定値は [] です。
settings object コンテナー/マシン固有の設定ファイルに既定の settings.json 値を追加します。
forwardPorts array コンテナー内からローカルマシンに転送する必要があるポートのリスト。
portsAttributes object ポート番号、"host:port" 値、範囲、または正規表現を一連の既定オプションにマップするオブジェクト。使用可能なオプションについては、ポート属性を参照してください。例:
"portsAttributes": {"3000": {"label": "アプリケーションポート"}}
otherPortsAttributes object portsAttributes を使用して構成されていないポート、ポート範囲、およびホストの既定オプション。使用可能なオプションについては、ポート属性を参照してください。例:
"otherPortsAttributes": {"onAutoForward": "silent"}
remoteEnv object VS Code (またはターミナルなどのサブプロセス) の環境変数を設定またはオーバーライドする名前と値のペアのセット。コンテナー全体ではありません。環境変数と事前定義された変数は、値で参照できます。
例: "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path" }
remoteUser string コンテナー内で VS Code が実行されるユーザー (ターミナル、タスク、デバッグなどのサブプロセスを含む) をオーバーライドします。既定値は、コンテナー全体が実行されているユーザー (多くの場合 root) です。
userEnvProbe enum VS Code またはその他の接続されたツールのプロセスに含めるユーザー環境変数を「プローブ」するために使用するシェルのタイプを示します: noneinteractiveShellloginShell、または loginInteractiveShell (既定)。使用される特定のシェルは、ユーザーの既定のシェル (通常は bash) に基づいています。たとえば、bash インタラクティブシェルには通常、/etc/bash.bashrc および ~/.bashrc で設定された変数が含まれますが、ログインシェルには通常、/etc/profile および ~/.profile からの変数が含まれます。このプロパティを loginInteractiveShell に設定すると、4 つのファイルすべてから変数が取得されます。
postAttachCommand string,
array
VS Code がコンテナーにアタッチされた後に実行するコマンド文字列またはコマンド引数のリスト。文字列で && を使用して、複数のコマンドを実行します。例: "yarn install" または "apt-get update && apt-get install -y curl"。配列構文 ["yarn", "install"] は、シェルを使用せずにコマンド (この場合は yarn) を直接呼び出します。既定では設定されていません。
配列構文はシェルなしでコマンドを実行することに注意してください。文字列と配列のプロパティのフォーマットの詳細については、こちらをご覧ください。

アタッチされたコンテナー構成ファイルの変数

変数は、アタッチされた構成ファイルの一部の文字列値で、${variableName} の形式で参照できます。次の表は、使用できる変数のリストです。

変数 プロパティ 説明
${containerEnv:VAR_NAME} remoteEnv 実行中のコンテナー内の既存の環境変数の値 (この場合は VAR_NAME)。例: "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path" }

Kubernetes クラスター内のコンテナーにアタッチする

Kubernetes クラスター内のコンテナーにアタッチするには、コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から [Dev Containers: 実行中の Kubernetes コンテナーにアタッチ...] を選択します。または、最初に Kubernetes 拡張機能kubectl を Dev Containers 拡張機能とともにインストールします。次に、アクティビティバーから Kubernetes エクスプローラーを選択し、アタッチするコンテナーが存在するクラスターと Pod を展開します。最後に、コンテナーを右クリックして、コンテキストメニューから [Visual Studio Code にアタッチ] を選択します。

注: アタッチされたコンテナー構成ファイルは、Kubernetes クラスター内のコンテナーではまだサポートされていません。

Attach to Kubernetes Container

次のステップ