๋™์ผํ•œ Windows ์‹œ์Šคํ…œ์˜ Docker ๋ฐ VMWare Workstation

์ž‘์—…์€ ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋™๋ฌผ์›์ด ์žˆ๋Š” ์ž‘์—… ์ค‘์ธ Windows ๋…ธํŠธ๋ถ์— Docker๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. Docker Desktop์„ ์„ค์น˜ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์•˜์ง€๋งŒ VMWare Workstation์ด ๋‹ค์Œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๊ฐ€์ƒ ๋จธ์‹  ์‹คํ–‰์„ ์ค‘์ง€ํ•œ ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.

์ž‘์—…์ด ์ค‘๋‹จ๋˜์–ด ์ˆ˜๋ฆฌ๊ฐ€ ์‹œ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค

๋™์ผํ•œ Windows ์‹œ์Šคํ…œ์˜ Docker ๋ฐ VMWare Workstation

๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด VMWare Workstation๊ณผ Hyper-V๊ฐ€ ๊ฐ™์€ ๋จธ์‹ ์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š์•„ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ ์ด์™€ ๊ฐ™์€ ๊ณต์‹ VMWare ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์น˜๊ธฐ, Microsoft ๊ธฐ์ˆ  ์ž๋ฃŒ์— ๋Œ€ํ•œ ๋งํฌ ํฌํ•จ Windows Defender Credential Guard ๊ด€๋ฆฌ. ํ•ด๊ฒฐ์ฑ…์€ Defender Credential Guard๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(Windows Defender Credential Guard ๋น„ํ™œ์„ฑํ™” ์„น์…˜์˜ ํ•ญ๋ชฉ 4๊ฐ€ ๋„์›€์ด ๋จ).

mountvol X: /s
copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d

๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด Windows์—์„œ Defender Credential Guard๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ• ์ง€ ๋ฌป์Šต๋‹ˆ๋‹ค. ์˜ˆ! ์ด๋Ÿฐ ์‹์œผ๋กœ VMWare Workstation์€ ์ •์ƒ ์ž‘๋™์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ  docker๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „๊ณผ ๊ฐ™์€ ์œ„์น˜์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Hyper-V์™€ VMWare Workstation์„ ์กฐํ™”์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์—์„œ ์นœ๊ตฌ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

์˜ค๋žซ๋™์•ˆ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์œผ๋กœ VMWare Workstation์— ์ค‘๋…๋˜์–ด Hyper-V์™€ VirtualBox์—์„œ ๋ฒ—์–ด๋‚˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ๊ธฐ๋Šฅ์ด ๋‚ด ์ž‘์—…์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•ด ์˜ค๋Š˜๊นŒ์ง€ ์•‰์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ž‘์—… ํ™˜๊ฒฝ์—์„œ VMWare, Docker ๋ฐ VSCode๋ฅผ ์นœ๊ตฌ๋กœ ๋งŒ๋“œ๋Š” ์†”๋ฃจ์…˜์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

๋„์ปค ๋จธ์‹  - ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ์—์„œ Docker ์—”์ง„์„ ์‹คํ–‰ํ•˜๊ณ  ์›๊ฒฉ ๋ฐ ๋กœ์ปฌ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์œ„ํ•œ VMWare Workstation ํ˜ธํ™˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นƒํ—ˆ๋ธŒ ๋งํฌ

ํŠนํžˆ ์„ค์น˜ ์ง€์นจ์„ ๋‹ค์‹œ ๋งํ•˜์ง€ ์•Š๊ณ  ์žฌ๋ฃŒ ๋ชฉ๋ก๋งŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋„์ปค ๋„๊ตฌ ์ƒ์ž (๋„์ปค ๋จธ์‹  ํฌํ•จ)
  2. Docker ๋จธ์‹  VMware ์›Œํฌ์Šคํ…Œ์ด์…˜ ๋“œ๋ผ์ด๋ฒ„
  3. ๋„์ปค ๋ฐ์Šคํฌํƒ‘

์˜ˆ, ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ Docker Desktop๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฒ ๊ฑฐํ–ˆ๋‹ค๋ฉด ๋‹ค์‹œ ์„ค์น˜ํ•˜๋˜ ์ด๋ฒˆ์—๋Š” VMWare Workstation์ด ๋‹ค์‹œ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก OS ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ํ™•์ธ๋ž€์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•  ๋•Œ ๊ถŒํ•œ ์—์Šค์ปฌ๋ ˆ์ด์…˜์„ ์š”์ฒญํ•˜์ง€๋งŒ ๋ช…๋ น ์ค„์˜ ๋ชจ๋“  ๋ช…๋ น๊ณผ ์Šคํฌ๋ฆฝํŠธ๋Š” ํ˜„์žฌ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์‹คํ–‰๋œ๋‹ค๋Š” ์ ์— ์ฆ‰์‹œ ์ฃผ๋ชฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ํŒ€์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ docker-machine create --driver=vmwareworkstation dev

Boot2Docker์—์„œ Docker๊ฐ€ ๋  dev virtualka๊ฐ€ ๋‚ด๋ถ€์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ€์ƒ ๋จธ์‹ ์€ ํ•ด๋‹น vmx ํŒŒ์ผ์„ ์—ด์–ด VMWare Workstation GUI์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ VSCode๊ฐ€ ์ด์ œ PowerShell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

cd ~/bin
./docker-machine env dev | Invoke-Expression
code

VSCode๋Š” ๋กœ์ปฌ ๋จธ์‹ ์˜ ์ฝ”๋“œ ๋ฐ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๋„์ปค์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์—ด๋ฆฝ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ Visual Studio Code์šฉ Docker ์ฝ˜์†”์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ ๋„ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋ ค์›€:

docker-machine์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Waiting for SSH to be available...

๋™์ผํ•œ Windows ์‹œ์Šคํ…œ์˜ Docker ๋ฐ VMWare Workstation

๊ทธ๋ฆฌ๊ณ  ์ž ์‹œ ํ›„ ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋ ค๋Š” ๊ณผ๋„ํ•œ ์‹œ๋„๋กœ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ์ •์ฑ…์— ๊ด€ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•  ๋•Œ ~.dockermachinemachinesdev ๋””๋ ‰ํ„ฐ๋ฆฌ์— SSH๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ์„œ ํŒŒ์ผ(id_rsa, id_rsa.pub)์ด ์žˆ์Šต๋‹ˆ๋‹ค. OpenSSH๋Š” ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์‚ฌ์šฉ์„ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. docker-machine๋งŒ์ด ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š๊ณ  ์ง€๋ฃจํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๋‹จ์ˆœํžˆ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ : ์ƒˆ ๊ฐ€์ƒ ๋จธ์‹  ์ƒ์„ฑ์ด ์‹œ์ž‘๋˜์ž๋งˆ์ž ~ .dockermachinemachinesdev ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ์ง€์ •๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์€ ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•ด์•ผ ํ•˜๋ฉฐ ํ˜„์žฌ ์‚ฌ์šฉ์ž์™€ ์‹œ์Šคํ…œ๋งŒ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ€์ง€๋ฉฐ ๊ด€๋ฆฌ์ž ๊ทธ๋ฃน๊ณผ ๊ด€๋ฆฌ์ž ์ž์‹ ์„ ํฌํ•จํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ Windows์—์„œ Posix ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ํฌํ•จ๋œ ๋ณผ๋ฅจ์„ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€