ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π±Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠ°, ΡΠ»ΠΎΠΆΠΈ Docker Π½Π° ΠΌΠΎΡ ΡΠ°Π±ΠΎΡΠ΅Ρ Windows Π»Π°ΠΏΡΠΎΠΏ, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ° Π·ΠΎΠΎΠΏΠ°ΡΠΊ. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Docker Desktop ΠΈ ΡΡΠ·Π΄Π°Π΄ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, Π½ΠΎ Π±ΡΡΠ·ΠΎ ΠΎΡΠΊΡΠΈΡ , ΡΠ΅ VMWare Workstation ΡΠΏΡΡ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Ρ Π³ΡΠ΅ΡΠΊΠ°:
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
Π Π°Π±ΠΎΡΠ°ΡΠ° Π΅ ΡΠΏΡΡΠ½Π°, ΡΠΏΠ΅ΡΠ΅Π½ Π΅ ΡΠ΅ΠΌΠΎΠ½Ρ
Π§ΡΠ΅Π· Π³ΡΠ³ΡΠ» Π±Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΎ, ΡΠ΅ ΡΠ°Π·ΠΈ Π³ΡΠ΅ΡΠΊΠ° Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° VMWare Workstation ΠΈ Hyper-V Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΈ ΠΈΠΌΠ° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° VMWare ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π°
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 (Docker ΠΌΠ°ΡΠΈΠ½Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ)ΠΡΠ°ΠΉΠ²Π΅Ρ Π·Π° Docker Machine VMware Workstation - DockerDesktop
ΠΠ°, Docker Desktop, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΡΡΠΎ ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. ΠΠΊΠΎ ΡΡΠ΅ Π³ΠΎ ΡΠ°Π·ΡΡΡΠΈΠ»ΠΈ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ, Π½ΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΡ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΠΎΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π° Π΄Π° Π½Π΅ ΡΡΡΠΏΠΈΡΠ΅ VMWare Workstation ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΡΠΊΠ°ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅ ΠΎΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΠΏΠΎΠΈΡΠΊΠ°Ρ Π΅ΡΠΊΠ°Π»Π°ΡΠΈΡ Π½Π° ΠΏΡΠ°Π²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°Ρ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠΎΠ²Π°, Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π».
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π΅ΠΊΠΈΠΏΡΡ:
$ docker-machine create --driver=vmwareworkstation dev
ΠΎΡ Boot2Docker ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° dev virtualka, Π²ΡΡΡΠ΅ Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Docker.
Π’Π°Π·ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ΅Π½Π° ΠΊΡΠΌ GUI Π½Π° VMWare Workstation ΡΡΠ΅Π· ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ vmx ΡΠ°ΠΉΠ». ΠΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π°ΡΠΎΡΠΎ VSCode ΡΠ΅Π³Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΡΠΊΡΠΈΠΏΡ Π½Π° PowerShell (ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΌΠΎΡΡΠ° docker-machine ΠΈ docker-machine-driver-vmwareworkstation ΡΠ΅ ΠΎΠ·ΠΎΠ²Π°Ρ Π° Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
code
VSCode ΡΠ΅ ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈ, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΊΠΎΠ΄ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° ΠΈ Π΄ΠΎΠΊΠ΅Ρ Π²ΡΠ² Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. ΠΏΠ»ΡΠ³ΠΈΠ½
ΡΡΡΠ΄Π½ΠΎΡΡΠΈ:
Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ-ΠΌΠ°ΡΠΈΠ½Π°, ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ²ΠΈΡΠ½Π° Π·Π° ΠΌΠ΅Π½:
Waiting for SSH to be available...
Π ΡΠ»Π΅Π΄ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ Ρ ΠΈΠ·Π»ΠΈΡΡΠΊ ΠΎΡ ΠΎΠΏΠΈΡΠΈ Π·Π° ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ° Ρ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°.
ΠΡΠΈΡΠΊΠΎ Π΅ Π²ΡΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ~.dockermachinemachinesdev Π² ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ΅ ΠΈΠΌΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· SSH: id_rsa, id_rsa.pub. OpenSSH ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠΊΠ°ΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π°ΡΠΎΡΠΎ ΡΠΌΡΡΠ°, ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°. Π‘Π°ΠΌΠΎ Π΄ΠΎΠΊΠ΅Ρ-ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π½ΡΠΌΠ° Π΄Π° Π²ΠΈ ΠΊΠ°ΠΆΠ΅ Π½ΠΈΡΠΎ Π·Π° ΡΠΎΠ²Π°, Π° ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΡΠ΅ ΠΎΡΠ΅Π³ΡΠΈ.
ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΎΡΠΈΠ²Π°ΠΌΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ~ .dockermachinemachinesdev ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΏΡΠ°Π²Π°ΡΠ° Π²ΡΡΡ Ρ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅Π΄ΠΈΠ½ ΠΏΠΎ Π΅Π΄ΠΈΠ½.
Π€Π°ΠΉΠ»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΡΠ°ΠΌΠΎ ΡΠ΅ΠΊΡΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈ Π‘ΠΠ‘Π’ΠΠΠΠ’Π ΠΈΠΌΠ°Ρ ΠΏΡΠ»Π΅Π½ Π΄ΠΎΡΡΡΠΏ, Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π³ΡΡΠΏΠ°ΡΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ ΠΈ ΡΠ°ΠΌΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΡΠΈΡΠΈ.
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΈΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΈ ΠΏΡΡΠΈΡΠ° ΠΎΡ Windows Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ Posix ΠΈ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΠΎΠΌΠΎΠ²Π΅, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ. ΠΠΎ ΡΠΎΠ²Π° Π΅ Π΄ΡΡΠ³Π° ΠΈΡΡΠΎΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com