실행 중인 컨테이너에 연결
Visual Studio Code는 컨테이너를 생성하고 시작할 수 있지만, 이는 사용자의 워크플로와 일치하지 않을 수 있습니다. 사용자는 이미 실행 중인 Docker 컨테이너에 VS Code를 "연결"하는 것을 선호할 수 있습니다. 연결된 후에는 devcontainer.json을 사용하여 폴더를 컨테이너에서 열 때와 마찬가지로 확장을 설치하고, 편집하고, 디버그할 수 있습니다.
Docker 컨테이너에 연결
Docker 컨테이너에 연결하려면 명령 팔레트(F1)에서 Dev Containers: Attach to Running Container...를 선택하거나, 활동 막대의 Remote Explorer를 사용하여 Containers 보기에서 연결하려는 컨테이너의 Attach to 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로 설정하면 네 개의 파일 모두에서 변수를 가져옵니다. |
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...를 선택하십시오. 또는 먼저 Kubernetes 확장 및 kubectl과 Dev Containers 확장을 설치하십시오. 그런 다음 활동 막대에서 Kubernetes 탐색기를 선택하고 연결하려는 컨테이너가 있는 클러스터 및 Pod를 확장합니다. 마지막으로 컨테이너를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 Attach Visual Studio Code를 선택하십시오.
참고: Kubernetes 클러스터의 컨테이너에 대해서는 연결된 컨테이너 구성 파일이 아직 지원되지 않습니다.

다음 단계
- Dev Container 생성 - 작업 환경을 위한 사용자 지정 컨테이너를 생성합니다.
- 고급 컨테이너 - 고급 컨테이너 시나리오에 대한 솔루션을 찾습니다.
- devcontainer.json 참조 -
devcontainer.json스키마를 검토합니다.