実行中のコンテナーにアタッチする
Visual Studio Code はコンテナーを作成して開始できますが、それはあなたのワークフローに合わないかもしれません。その場合、Visual Studio Code を既に実行中の Docker コンテナーに「アタッチ」することを好むかもしれません。それは、コンテナーがどのように開始されたかに関わらずです。一度アタッチされると、devcontainer.json を使用してコンテナー内のフォルダーを開くのと同じように、拡張機能をインストールしたり、編集したり、デバッグしたりできます。
Docker コンテナーにアタッチする
Docker コンテナーにアタッチするには、コマンドパレット (F1) から Dev Containers: Attach to Running Container... を選択するか、アクティビティバーの リモートエクスプローラー を使用し、コンテナー ビューから接続したいコンテナーの コンテナーにアタッチ インラインアクションを選択します。
注: Alpine Linuxコンテナーを使用する場合、拡張機能内のネイティブコードにある
glibc
の依存関係により、一部の拡張機能が動作しない場合があります。
アタッチされたコンテナー構成ファイル
VS Code は、特定の Docker コンテナーに繰り返し接続する際のセットアップを高速化するために、イメージまたはコンテナー名レベルの構成ファイルをサポートしています。一度アタッチされると、フォルダーを開いたり、拡張機能をインストールしたり、ポートを転送したりするたびに、ローカルのイメージ固有の構成ファイルが自動的に更新され、設定が記憶されるため、次にアタッチするときにはすべてが適切な状態に戻ります。
-
既定では、イメージレベルの構成が使用されます。アタッチ後にそれを表示または更新するには、コマンドパレット (F1) から Dev Containers: Open Container Configuration File を選択します。
-
構成を コンテナー名 に関連付けたい場合は、アタッチ後にコマンドパレット (F1) から Dev Containers: Open Named Configuration File を選択します。この時点以降の更新は、イメージレベルではなく、この名前レベルの構成に適用されます。
これらのファイルはどちらも 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: Open Attached Container Configuration File... を選択し、表示されたリストからイメージ/コンテナー名を選択して編集することもできます。
最後に、アタッチするコンテナーに関わらずインストールしたい拡張機能がある場合は、settings.json
を更新して、常にインストールされるべき拡張機能のリストを指定できます。
アタッチされたコンテナー構成リファレンス
アタッチされたコンテナー構成ファイルは devcontainer.json に類似しており、そのプロパティのサブセットをサポートしています。
プロパティ | タイプ | 説明 |
---|---|---|
workspaceFolder |
文字列 | VS Codeがコンテナーに接続するときに開くデフォルトのパスを設定します(これは多くの場合、コンテナー内でソースコードが見つかるボリュームマウントへのパスです)。デフォルトでは設定されていません(空のウィンドウが開きます)。 |
extensions |
配列 | コンテナー作成時にその内部にインストールされるべき拡張機能を指定する拡張IDの配列。デフォルトは[] です。 |
settings |
オブジェクト | デフォルトのsettings.json 値をコンテナー/マシン固有の設定ファイルに追加します。 |
forwardPorts |
配列 | コンテナー内からローカルマシンに転送されるべきポートのリスト。 |
portsAttributes |
オブジェクト | ポート番号、"host:port" 値、範囲、または正規表現をデフォルトオプションのセットにマッピングするオブジェクト。利用可能なオプションについては、ポート属性を参照してください。例:"portsAttributes": {"3000": {"label": "Application port"}} |
otherPortsAttributes |
オブジェクト | portsAttributes を使用して構成されていないポート、ポート範囲、およびホストのデフォルトオプション。利用可能なオプションについては、ポート属性を参照してください。例:"otherPortsAttributes": {"onAutoForward": "silent"} |
remoteEnv |
オブジェクト | VS Code(またはターミナルなどのサブプロセス)の環境変数を設定または上書きする名前と値のペアのセットですが、コンテナー全体ではありません。値には環境変数と定義済み変数を参照できます。 例: "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path" } |
remoteUser |
文字列 | VS Codeがコンテナー内で実行されるユーザー(ターミナル、タスク、デバッグなどのサブプロセスを含む)を上書きします。デフォルトでは、コンテナー全体が実行されているユーザー(多くの場合root )です。 |
userEnvProbe |
列挙型 | VS Codeまたは他の接続されたツールのプロセスに含めるユーザー環境変数を「プローブ」するために使用するシェルの種類を示します: none 、interactiveShell 、loginShell 、またはloginInteractiveShell (デフォルト)。使用される特定のシェルは、ユーザーのデフォルトシェル(通常はbash)に基づいています。例えば、bashのインタラクティブシェルは通常/etc/bash.bashrc と~/.bashrc に設定された変数を含み、ログインシェルは通常/etc/profile と~/.profile からの変数を含みます。このプロパティをloginInteractiveShell に設定すると、これら4つのファイルすべてから変数が取得されます。 |
postAttachCommand |
文字列、 配列 |
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: Attach to Running Kubernetes Container... を選択します。または、Dev Containers 拡張機能と一緒に Kubernetes 拡張機能とkubectl
をまずインストールします。次に、アクティビティバーからKubernetesエクスプローラーを選択し、アタッチしたいコンテナーが存在するクラスターとPodを展開します。最後に、コンテナーを右クリックし、コンテキストメニューから Visual Studio Code にアタッチを選択します。
注: アタッチされたコンテナー構成ファイルは、Kubernetes クラスター内のコンテナーではまだサポートされていません。
次のステップ
- 開発コンテナーを作成する - ワーク環境用のカスタムコンテナーを作成します。
- 高度なコンテナー - 高度なコンテナーシナリオの解決策を見つけます。
- devcontainer.jsonリファレンス -
devcontainer.json
スキーマを確認します。