Vscode-docker: VS Code 원격 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ κΈ°λ³Έ λ™μž‘ κ°œμ„ 

에 λ§Œλ“  2019λ…„ 05μ›” 23일  Β·  21μ½”λ©˜νŠΈ  Β·  좜처: microsoft/vscode-docker

ν˜„μž¬ Docker ν™•μž₯은 λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€(SSH, Dev Containers 및 WSL)μ—μ„œ UI ν™•μž₯으둜 κΈ°λ³Έ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 즉, 둜컬 μ»¨ν…Œμ΄λ„ˆ/이미지가 ν‘œμ‹œλ˜μ§€λ§Œ 파일 μ‹œμŠ€ν…œμ΄λ‚˜ 터미널에 μ•‘μ„ΈμŠ€ν•˜λŠ” 것은 μ‹€νŒ¨ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ 원격 μ»¨ν…Œμ΄λ„ˆ/이미지에 μ•‘μ„ΈμŠ€ν•˜λ €λ©΄ 섀정에 λ‹€μŒμ„ μΆ”κ°€ν•˜μ—¬ μž‘μ—… 곡간 ν™•μž₯으둜 μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

"remote.extensionKind": {
    "ms-azuretools.vscode-docker": "workspace"
}

λ‹€μŒμ€ μ„Έ 가지 VS Code Remote μ‹œλ‚˜λ¦¬μ˜€ λͺ¨λ‘μ— λŒ€ν•œ 이상적인 λ™μž‘μ— λŒ€ν•œ 제 μƒκ°μž…λ‹ˆλ‹€.

SSH

이것은 μž‘μ—… 곡간 ν™•μž₯으둜 κΈ°λ³Έ μ„€μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ _remote_ μ‹œμŠ€ν…œμ˜ μ»¨ν…Œμ΄λ„ˆ/이미지가 ν‘œμ‹œλ˜κ³  λŒ€λΆ€λΆ„μ˜ μž‘μ—…μ€ "정상 μž‘λ™"ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‚¬μš©μžλ„ 이것을 μ›ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€(https://github.com/microsoft/vscode-docker/issues/924 μ°Έμ‘°).

개발 μ»¨ν…Œμ΄λ„ˆ

μž‘μ—… 곡간 ν™•μž₯("Docker의 Docker"라고도 함)으둜 μ‹€ν–‰ν•˜λŠ” 것은 일반적으둜 ν˜Όλ™λ˜λ―€λ‘œ ν”Όν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 μ‹œλ‚˜λ¦¬μ˜€λŠ” 본질적으둜 "Dockerfile"을 λ‹€λ£¨λ―€λ‘œ μ™„μ „νžˆ λ¬΄μ‹œν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ΄μƒμ μœΌλ‘œλŠ” 기본적으둜 UI ν™•μž₯으둜 μ„€μ •λ©λ‹ˆλ‹€. νƒμƒ‰κΈ°λŠ” 둜컬 μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆλ₯Ό ν‘œμ‹œν•˜κ³  μ‚¬μš©μžκ°€ 터미널이 ν•„μš”ν•˜κ±°λ‚˜ 파일 μ‹œμŠ€ν…œμ— μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜λŠ” λͺ…령을 μ‹€ν–‰ν•˜λ €κ³  ν•˜λ©΄ 이해할 수 μžˆλŠ” 였λ₯˜λ₯Ό ν‘œμ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€.

VS Codeμ—μ„œ λ‹€μŒμ„ μ œκ³΅ν•˜λŠ” 경우 이 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. "Build Image"와 같은 λͺ…령을 μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ»¨ν…Œμ΄λ„ˆ λŒ€μ‹  둜컬 머신에 터미널을 μƒμ„±ν•˜λŠ” API
  2. "Docker 파일 μΆ”κ°€"와 같은 λͺ…령을 μ‹€ν–‰ν•  수 μžˆλ„λ‘ μ»¨ν…Œμ΄λ„ˆμ˜ 파일 μ‹œμŠ€ν…œμ— μ•‘μ„ΈμŠ€ν•˜λŠ” API

μ‚¬μš©μžκ°€ μž‘μ—… 곡간 ν™•μž₯으둜 μ‹€ν–‰ 쀑인 경우 κΈ°λ³Έ "Docker에 μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€." λŒ€μ‹  μ‚¬μš©μž 지정 λ©”μ‹œμ§€λ₯Ό ν‘œμ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ—κ²Œ UI ν™•μž₯으둜 μ „ν™˜ν•˜κ±°λ‚˜ λ„μ»€μ—μ„œ 도컀λ₯Ό μ„€μ •ν•˜λ„λ‘ μ§€μ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€(λͺ¨ν—˜μ„ λŠλΌλŠ” 경우).

WSL

WSL λ‚΄μ—μ„œ 도컀λ₯Ό μ‹€ν–‰ν•˜λŠ” κΈ°λŠ₯은 μ΅œκ·Όμ— λ‚˜μ˜¨ 것이며 μ–Όλ§ˆλ‚˜ 잘 μ§€μ›λ˜λŠ”μ§€ λΆˆλΆ„λͺ…ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ 이상적인 세계에 있고 dockerκ°€ WSLμ—μ„œ ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν–ˆλ‹€λ©΄ 이 λ™μž‘μ€ SSH와 μœ μ‚¬ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ 기본값을 μ„ νƒν•˜κ³  μ›ν•˜λŠ” 경우 이λ₯Ό λ³€κ²½ν•˜λŠ” 방법을 λ¬Έμ„œν™”ν•˜λŠ” 것이 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

VS Code 원격 νŒ€μ— λŒ€ν•œ 질문:

  1. "Dev Containers"(UI) λŒ€ "SSH"(Workspace)에 λŒ€ν•΄ λ‹€λ₯Έ 기본값을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆκΉŒ?
  2. ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ μ›κ²©μ—μ„œ μ‹€ν–‰ 쀑인지 μ–΄λ–»κ²Œ κ°μ§€ν•©λ‹ˆκΉŒ? 그리고 μ–΄λ–€ μ’…λ₯˜μ˜ μ›κ²©μž…λ‹ˆκΉŒ? (였λ₯˜ λ©”μ‹œμ§€λ₯Ό μ‚¬μš©μž μ •μ˜ν•  수 μžˆλ„λ‘)
  3. UI ν™•μž₯으둜 둜컬 컴퓨터에 터미널을 λ§Œλ“œλŠ” 곡식 APIκ°€ μžˆμŠ΅λ‹ˆκΉŒ?
  4. UI ν™•μž₯으둜 μ‹€ν–‰ν•  λ•Œ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ 파일 μ‹œμŠ€ν…œμ— μ•‘μ„ΈμŠ€ν•˜λŠ” 곡식 APIκ°€ μžˆμŠ΅λ‹ˆκΉŒ?
P1 feature remote

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‹€μŒμ„ μ‚¬μš©ν•  λ•Œ SSH ν™˜κ²½μ—μ„œ λ‚΄ λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆμ™€ 이미지λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

"remote.extensionKind": {
    "ms-azuretools.vscode-docker": "workspace"
}

이미지 μ‹€ν–‰, μ»¨ν…Œμ΄λ„ˆ 둜그 보기, μ»¨ν…Œμ΄λ„ˆ 쀑지 및 μ…Έ 연결은 μž‘λ™ν•˜μ§€λ§Œ μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆλ₯Ό 마우슀 였λ₯Έμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜κ³  'Visual Studio μ½”λ“œ 첨뢀'λ₯Ό μ„ νƒν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ 호슀트 μ‹œμŠ€ν…œμ— docker cliκ°€ μ—†κΈ° λ•Œλ¬Έμ— μ‹€νŒ¨ν•©λ‹ˆλ‹€.

λ‚΄ 원격(ssh)μ—μ„œ 'μž‘μ—… 곡간' λͺ¨λ“œλ‘œ ν™•μž₯을 μ‹€ν–‰ν•˜κ³  있기 λ•Œλ¬Έμ— 이 λͺ©μ μœΌλ‘œλ„ 원격 docker cliλ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  21 λŒ“κΈ€

@EricJizbaMSFT

SSH와 μ»¨ν…Œμ΄λ„ˆ μ»¨ν…μŠ€νŠΈλ₯Ό κ΅¬λ³„ν•˜λŠ” 것은 μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€.

"Dev Containers"(UI) λŒ€ "SSH"(Workspace)에 λŒ€ν•΄ λ‹€λ₯Έ 기본값을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆκΉŒ?

기본값은 μ •μ μœΌλ‘œ μœ μ§€λ˜λ©° μ€‘μš”ν•œ 것은 ν™•μž₯이 λ‹€λ₯Έ μ»¨ν…μŠ€νŠΈμ— μ μ‘ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법은 λ‹€μŒ μ§ˆλ¬Έμ„ μ°Έμ‘°ν•˜μ„Έμš”.

ν™•μž₯ ν”„λ‘œκ·Έλž¨μ΄ μ›κ²©μ—μ„œ μ‹€ν–‰ 쀑인지 μ–΄λ–»κ²Œ κ°μ§€ν•©λ‹ˆκΉŒ? 그리고 μ–΄λ–€ μ’…λ₯˜μ˜ μ›κ²©μž…λ‹ˆκΉŒ? (였λ₯˜ λ©”μ‹œμ§€λ₯Ό μ‚¬μš©μž μ •μ˜ν•  수 μžˆλ„λ‘)

vscode.env.remoteAuthority λ₯Ό μ‚¬μš©ν•˜λ©΄ ν™•μž₯이 μ›κ²©μœΌλ‘œ μ‹€ν–‰ 쀑인지 여뢀와 ν™•μž₯이 μ‹€ν–‰ 쀑인 원격 κΆŒν•œμ„ λͺ¨λ‘ κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. APIλŠ” 1.35에 μžˆμŠ΅λ‹ˆλ‹€. API λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

해석기 λ©”μ»€λ‹ˆμ¦˜μ€ https://github.com/microsoft/vscode/blob/afb08370356e0625b40d2ea42aa7dc0513aa2c39/src/vs/vscode.proposed.d.ts#L131에 λ¬Έμ„œν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ VS Code 원격 μ»¨ν…Œμ΄λ„ˆ ν™•μž₯은 'dev-container' 및 ' attached -container' κΆŒν•œ ν™•μΈμžλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

UI ν™•μž₯으둜 둜컬 컴퓨터에 터미널을 λ§Œλ“œλŠ” 곡식 APIκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

홍보 https://github.com/microsoft/vscode-docker/pull/907을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

UI ν™•μž₯으둜 μ‹€ν–‰ν•  λ•Œ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ 파일 μ‹œμŠ€ν…œμ— μ•‘μ„ΈμŠ€ν•˜λŠ” 곡식 APIκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

아직 μ•„λ‹ˆμ§€λ§Œ 이것은 우리의 λ°±λ‘œκ·Έμ— μžˆμŠ΅λ‹ˆλ‹€. 이것이 μ œμžλ¦¬μ— μžˆμ„ λ•ŒκΉŒμ§€ PR https://github.com/microsoft/vscode-docker/pull/907/μ—μ„œ μˆ˜ν–‰λœ λŒ€λ‘œ 파일 μ‹œμŠ€ν…œ μ•‘μ„ΈμŠ€κ°€ ν•„μš”ν•œ λͺ…령을 λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

//fyi @Chuxel @RMacfarlane @kieferrm @jrieken

μƒˆ API에 λŒ€ν•œ μ•½κ°„μ˜ κ°œμ„ : https://github.com/microsoft/vscode/issues/74188#issuecomment -496579989. vscode.env.remoteAuthority λŠ” 이제 undefined λ˜λŠ” { prefix: string} μœ ν˜•μ˜ κ°œμ²΄κ°€ λ©λ‹ˆλ‹€. 그것은 toString의 전체 κ°’μž…λ‹ˆλ‹€. κ·Έ μ΄μœ λŠ” 원격 uriκ°€ 일반적으둜 vscode-remote://ssh+something-machine-specific/path 처럼 보이고 κΆŒν•œμ˜ ssh λΆ€λΆ„λ§Œ μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ°Έκ³ : 1.35의 경우 vscode.env.remoteAuthority 와 ν•¨κ»˜ 배솑 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ . 전체 λ°°κ²½: https://github.com/microsoft/vscode/issues/74188#issuecomment -496839841. μ œμ•ˆλœ API ExtensionContext#executionContext λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

기본값은 μ •μ μœΌλ‘œ μœ μ§€λ˜λ©° μ€‘μš”ν•œ 것은 ν™•μž₯이 λ‹€λ₯Έ μ»¨ν…μŠ€νŠΈμ— μ μ‘ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

@egamma κ·Έλž˜μ„œ package.jsonμ—μ„œ "ui" λ˜λŠ” "workspace" 쀑 ν•˜λ‚˜μ˜ κΈ°λ³Έκ°’λ§Œ 지정할 수 μžˆλ‹€λŠ” λ§μ”€μ΄μ‹ κ°€μš”? 그것은 이해할 수 μžˆμ§€λ§Œ 기본값을 κ²°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. https://github.com/microsoft/vscode-docker/issues/924 μ—μ„œ μ‚¬μš©μžκ°€ 기본적으둜 "μž‘μ—… 곡간"으둜 μ„€μ •ν•˜κΈ°λ₯Ό κΈ°λŒ€ν•œλ‹€λŠ” ν”Όλ“œλ°±μ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€. 그것이 λ‹Ήμ‹ μ—κ²Œ μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆκΉŒ? (개발 μ»¨ν…Œμ΄λ„ˆ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ λ¨Όμ € 였λ₯˜ λ©”μ‹œμ§€λ₯Ό κ°œμ„ ν•œλ‹€κ³  κ°€μ •). 특히, λ‚˜μ—κ²Œ λˆˆμ— λ„λŠ” λͺ‡ 가지 μ˜κ²¬μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

... κ°€μž₯ μ΄μƒν•œ λ™μž‘μ€ 이 ν™•μž₯이 ssh에 μ„€μΉ˜ν•˜λŠ” 것이 λΉ„ν™œμ„±ν™”λœ λͺ‡ 가지 ν…Œλ§ˆκ°€ μ—†λŠ” ν™•μž₯ 쀑 ν•˜λ‚˜μ΄λ©° 둜컬둜만 μ„€μΉ˜ν•  수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‚΄ κΈ°λŒ€λŠ” λ˜ν•œ 리λͺ¨μ»¨μ˜ 도컀 μ†ŒμΌ“μ„ μ‚¬μš©ν•˜λŠ” κ²ƒμ΄μ§€λ§Œ κ·Έλ ‡κ²Œ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

@EricJizbaMSFT 기본적으둜 SSHλ₯Ό ν†΅ν•œ 원격 도컀 μ†ŒμΌ“κ³Ό WSL 및/λ˜λŠ” μ»¨ν…Œμ΄λ„ˆμš© 둜컬 μ†ŒμΌ“μ„ μ‚¬μš©ν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ©λ‹ˆλ‹€. μ΄λŠ” ν˜„μž¬ WSL/μ»¨ν…Œμ΄λ„ˆ 개발 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 도컀 λ°”μ΄λ„ˆλ¦¬λ₯Ό Windows TCP 포트용 도컀에 μ—°κ²°ν•΄μ•Ό ν•˜λ―€λ‘œ 기본적으둜 둜컬 도컀λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ•½κ°„μ˜ 사전 생각. WSL 2κ°€ λ‚˜μ˜€λ©΄ μ‚¬μš©μžλŠ” WSL 자체 λ‚΄μ˜ 원격 도컀 μ†ŒμΌ“μ— μ—°κ²°ν•˜κΈ°λ₯Ό 원할 수 μžˆμŠ΅λ‹ˆλ‹€. 이것이 κΈ°λ³Έ 섀정에 영ν–₯을 λ―ΈμΉ˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ μ‚¬μš©μžκ°€ κΈ°λ³Έ 섀정을 직접 ꡬ성해야 ν•  ν•„μš”μ„±μ„ κ°•μ‘°ν•©λ‹ˆλ‹€.

@egamma κ·Έλž˜μ„œ package.jsonμ—μ„œ "ui" λ˜λŠ” "workspace" 쀑 ν•˜λ‚˜μ˜ κΈ°λ³Έκ°’λ§Œ 지정할 수 μžˆλ‹€λŠ” λ§μ”€μ΄μ‹ κ°€μš”? 그것은 이해할 수 μžˆμ§€λ§Œ 기본값을 κ²°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

기본값은 ν˜„μž¬ "ui"둜 μœ μ§€λ©λ‹ˆλ‹€.

#924μ—μ„œ μ‚¬μš©μžκ°€ 기본적으둜 "μž‘μ—… 곡간"으둜 μ„€μ •ν•˜κΈ°λ₯Ό κΈ°λŒ€ν•œλ‹€λŠ” ν”Όλ“œλ°±μ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€.

이것은 ν›Œλ₯­ν•œ ν”Όλ“œλ°±μ΄μ§€λ§Œ 과거에 이 기본값을 μ‹œλ„ν–ˆμ§€λ§Œ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€(ν”Όλ“œλ°±μ„ μ•Œμ•„λ‚Ό 수 있음). UI ν™•μž₯은 λ˜ν•œ μ‚¬μš© κ°€λŠ₯ν•˜κ³  각 μ»¨ν…Œμ΄λ„ˆμ— μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†λ‹€λŠ” 이점이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 이유둜 우리의 μ œμ•ˆμ€ 도컀 ν™•μž₯이 ν˜„μž¬ UI ν™•μž₯으둜 남아 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ–‘μͺ½μ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” ν™•μž₯ ν”„λ‘œκ·Έλž¨μ˜ κ°œμ„  사항에 λŒ€ν•΄ λ…Όμ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(예: Chrome 디버거 ν™•μž₯ ν”„λ‘œκ·Έλž¨λ„ 이 버킷에 속함).

@pd93 도컀 ν™•μž₯을 UI ν™•μž₯으둜 계속 μ‹€ν–‰ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ SSHλ₯Ό 톡해 원격 도컀 μ†ŒμΌ“μ„ 가리킀도둝 docker.host 섀정을 μ •μ˜ν–ˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” Dockerλ₯Ό WSL2μ—μ„œ μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(ν›Œλ₯­ν•œ BTWλ₯Ό μ‹€ν–‰ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€). κ·Έλž˜μ„œ μžμ—°μŠ€λŸ½κ²Œ μ„€μ •ν•˜λ €κ³  ν–ˆμŠ΅λ‹ˆλ‹€.
"docker.host": "/var/run/docker.sock" ν•˜μ§€λ§Œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
image

@benc-uk @pd93 @egamma 예, WSL2λŠ” 원격 VMμ—μ„œ μ‹€ν–‰ν•˜λŠ” κ²ƒμ²˜λŸΌ 느껴질 κ²ƒμž…λ‹ˆλ‹€. λ‚΄ λ‚΄κΈ°μž…λ‹ˆλ‹€. Windowsμ—μ„œ νŠΉμ • μ½”λ“œλ₯Ό λ°°μΉ˜ν•˜μ§€ μ•ŠλŠ” ν•œ Linux OS에 둜컬인 μ†ŒμΌ“μ€ Windows에 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. -- 그리고 그것듀은 λͺ…λͺ…λœ νŒŒμ΄ν”„λ‘œλ„ λ²ˆμ—­λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. (WSL1μ—μ„œλŠ” κ·Έλ ‡κ²Œ ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. Docker TCP 포트λ₯Ό λ…ΈμΆœν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.)

더 λ§Žμ€ 것을 보렀면 WSL2 μ‹œμŠ€ν…œμ„ 가동해야 ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ‚΄ 생각은 WSL2에 λŒ€ν•œ κ²ƒμ΄λ―€λ‘œ μž‘μ—… 곡간 ν™•μž₯으둜 μ‹€ν–‰λ˜λŠ” μ˜΅μ…˜μ„ 원할 κ²ƒμž…λ‹ˆλ‹€.

κ΄€λ ¨ λ©”λͺ¨μ—μ„œ Remote - Containers ν™•μž₯μ—μ„œ 이것은 μ•„λ§ˆλ„ 원격 도컀 호슀트처럼 보일 κ²ƒμž…λ‹ˆλ‹€(μ΅œμ ν™”λ˜μ§€λŠ” μ•Šμ•˜μ§€λ§Œ 지원). ν™œμš©μ— 따라 ν•΄λ‹Ή μ‹œλ‚˜λ¦¬μ˜€μ˜ μš°μ„  μˆœμœ„λ₯Ό 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

λ„£μ–΄ κ³ μ •ν–ˆμŠ΅λ‹ˆλ‹€

    "remote.extensionKind": {
        "peterjausovec.vscode-docker": "workspace"
    }

λ‚΄ μ‚¬μš©μž settings.jsonμ—μ„œ WSLμ—μ„œ μ›κ²©μœΌλ‘œ ν™•μž₯을 κ°•μ œ μ‹€ν–‰ν•˜κ³  docker.host λ˜λŠ” DOCKER_HOST ν™˜κ²½ λ³€μˆ˜μ— λŒ€ν•΄ 아무 것도 μ„€μ •ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ†ŒμΌ“μ„ μžλ™μœΌλ‘œ μ„ νƒν•©λ‹ˆλ‹€.

@benc-uk μ•ˆλ…•ν•˜μ„Έμš”, 원격 ν˜ΈμŠ€νŠΈμ— dockerκ°€ μ„€μΉ˜λ˜μ–΄ 있고 둜컬 컴퓨터가 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ 경우 remote-sshλ₯Ό μ‚¬μš©ν•˜μ—¬ 원격 개발 μ„œλ²„μ— μ—°κ²°ν•œ λ‹€μŒ 원격 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œλ‘œ 원격 μ„œλ²„μ˜ dockerλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 둜컬 λ„μ»€μ²˜λŸΌ μž‘λ™ν•˜λ„λ‘ ν•©λ‹ˆκΉŒ? 원격 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 둜컬 컴퓨터에 도컀λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš”, 원격 ν˜ΈμŠ€νŠΈμ— 도컀가 μ„€μΉ˜λ˜μ–΄ 있고 둜컬 컴퓨터가 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ 경우 원격 sshλ₯Ό μ‚¬μš©ν•˜μ—¬ 원격 개발 μ„œλ²„μ— μ—°κ²°ν•œ λ‹€μŒ 원격 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œλ‘œ 원격 μ„œλ²„μ˜ 도컀λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘λ™ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 둜컬 λ„μ»€μ²˜λŸΌ? 원격 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 둜컬 컴퓨터에 도컀λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

원격 - μ»¨ν…Œμ΄λ„ˆ ν™•μž₯을 μ‚¬μš©ν•˜λ €λ©΄ λ‘œμ»¬μ—μ„œ Docker CLIκ°€ ν•„μš”ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μœ„μ—μ„œ μ„€λͺ…ν•œ "remote.extensionKind"λ₯Ό μ‚¬μš©ν•˜μ—¬ 둜컬 ν™•μž₯ 없이 원격 - SSH와 ν•¨κ»˜ Docker ν™•μž₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

원격 도컀 ν˜ΈμŠ€νŠΈμ—μ„œ 원격 - μ»¨ν…Œμ΄λ„ˆ μ‚¬μš©μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ μ—¬κΈ°λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

μ•ˆλ…•ν•˜μ„Έμš”, 원격 ν˜ΈμŠ€νŠΈμ— 도컀가 μ„€μΉ˜λ˜μ–΄ 있고 둜컬 컴퓨터가 μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ 경우 원격 sshλ₯Ό μ‚¬μš©ν•˜μ—¬ 원격 개발 μ„œλ²„μ— μ—°κ²°ν•œ λ‹€μŒ 원격 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œλ‘œ 원격 μ„œλ²„μ˜ 도컀λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘λ™ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 둜컬 λ„μ»€μ²˜λŸΌ? 원격 μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 둜컬 컴퓨터에 도컀λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

원격 - μ»¨ν…Œμ΄λ„ˆ ν™•μž₯을 μ‚¬μš©ν•˜λ €λ©΄ λ‘œμ»¬μ—μ„œ Docker CLIκ°€ ν•„μš”ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μœ„μ—μ„œ μ„€λͺ…ν•œ "remote.extensionKind"λ₯Ό μ‚¬μš©ν•˜μ—¬ 둜컬 ν™•μž₯ 없이 원격 - SSH와 ν•¨κ»˜ Docker ν™•μž₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

원격 도컀 ν˜ΈμŠ€νŠΈμ—μ„œ 원격 - μ»¨ν…Œμ΄λ„ˆ μ‚¬μš©μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ μ—¬κΈ°λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

κ·ΈλŸ¬λ‚˜ λ‚΄κ°€ μ›ν•˜λŠ” κΈ°λŠ₯은 둜컬 컴퓨터 κ°€ 도컀λ₯Ό μ„€μΉ˜ν•˜μ§€ μ•Šκ³  원격 컴퓨터 κ°€ 도컀λ₯Ό μ„€μΉ˜ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚΄ 둜컬 컴퓨터가 remote-ssh λ₯Ό 톡해 원격 컴퓨터에 μ—°κ²°λœ ν›„ 원격 μ»΄ν“¨ν„°μ—μ„œ 원격 μ»¨ν…Œμ΄λ„ˆ κΈ°λŠ₯이 μ‚¬μš©λ˜λ©° λ™μž‘μ€ 둜컬 컴퓨터 μ—μ„œ 원격 μ»¨ν…Œμ΄λ„ˆ λ₯Ό μ‚¬μš©ν•˜λŠ” 것과 λ™μΌν•©λ‹ˆλ‹€.

"WSL λ‚΄μ—μ„œ 도컀λ₯Ό μ‹€ν–‰ν•˜λŠ” κΈ°λŠ₯은 μ΅œκ·Όμ— λ‚˜μ˜¨ 것이며 μ–Όλ§ˆλ‚˜ 잘 μ§€μ›λ˜λŠ”μ§€ λΆˆλΆ„λͺ…ν•©λ‹ˆλ‹€"λΌλŠ” μ˜κ²¬μ— λŒ€ν•œ 관찰일 λΏμž…λ‹ˆλ‹€.

DockerλŠ” 졜근 Windows 10μ—μ„œ Docker의 λ―Έλž˜μ— λŒ€ν•΄ κ²Œμ‹œν–ˆμœΌλ©° μš”μ•½μ€ - WSL(예: WSL v2)μ—μ„œ Dockerλ₯Ό μ‹€ν–‰ν•˜λŠ” 것이 μ•žμœΌλ‘œ Dockerλ₯Ό μ‹€ν–‰ν•˜λŠ” κΈ°λ³Έ 방법이 될 κ²ƒμž…λ‹ˆλ‹€.
https://engineering.docker.com/2019/06/docker-hearts-wsl-2/

WSLμ—μ„œ μ‹€ν–‰λ˜λŠ” Dockerλ₯Ό μ§€μ›ν•˜λŠ” 것이 맀우 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

참고둜 ν˜„μž¬ κ³„νšμ€ 기본값을 "UI"μ—μ„œ "Workspace"둜 λ³€κ²½ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

"UI"의 기본값이 μ˜λ―Έκ°€ μžˆλŠ” μœ μΌν•œ μ‹œλ‚˜λ¦¬μ˜€λŠ” Dev Container μ‹œλ‚˜λ¦¬μ˜€μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ DockerλŠ” Dev Container의 "UI" ν™•μž₯으둜 λ³΄λŠ” Docker보닀 훨씬 더 맀λ ₯적인 SSH/WSL의 "Workspace" ν™•μž₯으둜 κ°„μ£Όλ©λ‹ˆλ‹€. μ „μžλŠ” VS Code Remoteκ°€ μΆœμ‹œλ˜κΈ° μ „μ—λŠ” λΆˆκ°€λŠ₯ν–ˆλ˜ μƒˆλ‘œμš΄ κΈ°λŠ₯을 κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. ν›„μžλŠ” 둜컬 VS Code μΈμŠ€ν„΄μŠ€λ‘œ 이미 달성할 수 μžˆλŠ” 것과 λ™μΌν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

λ˜ν•œ μ‚¬μš©μžκ°€ 원격 μ»΄ν“¨ν„°μ—μ„œ 도컀 ν™•μž₯을 μ‹€ν–‰ν•˜κΈ°λ₯Ό κΈ°λŒ€ν•˜κ³  λ‘œμ»¬μ—μ„œ μ›κ²©μœΌλ‘œ μ „ν™˜ν•˜λŠ” 방법이 λͺ…ν™•ν•˜μ§€ μ•Šλ‹€λŠ” ν”Όλ“œλ°± 을 계속 λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€.

@egamma 당신이 "UI"의 기본값을 μ˜Ήν˜Έν•˜λŠ” 이 μŠ€λ ˆλ“œμ˜ μ£Όμš” 인물인 것 κ°™μœΌλ‹ˆ λΆ€λ‹΄ 없이 μ°Έμ—¬ν•΄ μ£Όμ‹­μ‹œμ˜€. κ·€ν•˜μ˜ 의견과 κ΄€λ ¨ν•˜μ—¬:

이것은 ν›Œλ₯­ν•œ ν”Όλ“œλ°±μ΄μ§€λ§Œ 과거에 이 기본값을 μ‹œλ„ν–ˆμ§€λ§Œ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€(ν”Όλ“œλ°±μ„ μ•Œμ•„λ‚Ό 수 있음).

ν”Όλ“œλ°±μ„ νŒŒν—€μΉ  수 μžˆλ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€. ν”Όλ“œλ°±μ΄ Dev Container μ‹œλ‚˜λ¦¬μ˜€μ™€ 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” 그것이 μ™„λ²½ν•  것이라고 κΈ°λŒ€ν•˜μ§€ μ•Šμ§€λ§Œ 기본적으둜 "Workspace"(였λ₯˜ λ©”μ‹œμ§€ μ§€μš°κΈ° λ“±)둜 μ„€μ •λ˜μ–΄ μžˆμ„ λ•Œ κ°€λŠ₯ν•œ ν•œ 고톡 없이 λ§Œλ“€κΈ°λ₯Ό ν¬λ§ν•©λ‹ˆλ‹€.

UI ν™•μž₯은 λ˜ν•œ μ‚¬μš© κ°€λŠ₯ν•˜κ³  각 μ»¨ν…Œμ΄λ„ˆμ— μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†λ‹€λŠ” 이점이 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” λ‹Ήμ‹ μ˜ μš”μ μ„ μ•Œμ§€λ§Œ 이것이 μ˜€λŠ˜λ‚  VS Code Remote와 ν•¨κ»˜ λŒ€λ‹€μˆ˜μ˜ ν™•μž₯이 μž‘λ™ν•˜λŠ” λ°©μ‹μ΄λ―€λ‘œ 거래 μ°¨λ‹¨κΈ°μ²˜λŸΌ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€.

참고둜 ν˜„μž¬ κ³„νšμ€ 기본값을 "UI"μ—μ„œ "Workspace"둜 λ³€κ²½ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

원격 SSH/WSL ν™˜κ²½μ—μ„œ λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ν–ˆκΈ° λ•Œλ¬Έμ— μ΅œκ·Όμ— 이 ν™•μž₯을 μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이것은 쒋은 μ†Œμ‹μž…λ‹ˆλ‹€!

@pd93 기본값에 관계없이 μœ„μ—μ„œ μ–ΈκΈ‰ν•œ μ„€μ •μœΌλ‘œ SSH/WSL ν™˜κ²½μ—μ„œ 이 ν™•μž₯을 μ‚¬μš©ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

"remote.extensionKind": {
    "ms-azuretools.vscode-docker": "workspace"
}

@EricJizbaMSFT 이것은 원격 κ°œλ°œμ—μ„œ μž‘λ™ν•˜μ§€λ§Œ λ‘œμ»¬μ—μ„œ μž‘μ—…ν•˜μ§€λ§Œ λ„μ»€μš©μœΌλ‘œ wsl만 μ‚¬μš©ν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€λŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ? ν˜„μž¬ 기술 미리 λ³΄κΈ°μ—μ„œλŠ” 아무 것도 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 도컀 μ»¨ν…μŠ€νŠΈλ₯Ό 지원할 κ³„νšμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

@ksawerykarwacki μœ„μ˜ 섀정을 μ‹œλ„ ν–ˆμŠ΅λ‹ˆκΉŒ? "workspace"λ₯Ό μˆ˜ν–‰ν•˜μ—¬ 도컀 ν™•μž₯을 WSLμ—μ„œ μ‹€ν–‰ν•˜κ±°λ‚˜ "ui"λ₯Ό μˆ˜ν–‰ν•˜μ—¬ WSL μ™ΈλΆ€μ—μ„œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 참고둜 VS Codeλ₯Ό λ³€κ²½ν•œ ν›„μ—λŠ” λ‹€μ‹œ λ‘œλ“œν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ‹€μŒμ„ μ‚¬μš©ν•  λ•Œ SSH ν™˜κ²½μ—μ„œ λ‚΄ λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆμ™€ 이미지λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

"remote.extensionKind": {
    "ms-azuretools.vscode-docker": "workspace"
}

이미지 μ‹€ν–‰, μ»¨ν…Œμ΄λ„ˆ 둜그 보기, μ»¨ν…Œμ΄λ„ˆ 쀑지 및 μ…Έ 연결은 μž‘λ™ν•˜μ§€λ§Œ μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆλ₯Ό 마우슀 였λ₯Έμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜κ³  'Visual Studio μ½”λ“œ 첨뢀'λ₯Ό μ„ νƒν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ 호슀트 μ‹œμŠ€ν…œμ— docker cliκ°€ μ—†κΈ° λ•Œλ¬Έμ— μ‹€νŒ¨ν•©λ‹ˆλ‹€.

λ‚΄ 원격(ssh)μ—μ„œ 'μž‘μ—… 곡간' λͺ¨λ“œλ‘œ ν™•μž₯을 μ‹€ν–‰ν•˜κ³  있기 λ•Œλ¬Έμ— 이 λͺ©μ μœΌλ‘œλ„ 원격 docker cliλ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

@parence "Attach Visual Studio Code" λͺ…령은 λ‹€λ₯Έ ν™•μž₯의 일뢀이며 ν•΄λ‹Ή μ €μž₯μ†ŒλŠ” https://github.com/Microsoft/vscode-remote-releaseμž…λ‹ˆλ‹€. 거기에 ν•΄λ‹Ή λͺ…령에 λŒ€ν•œ ν”Όλ“œλ°±μ„ μ œμΆœν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰