Docker ва VMWare Workstation дар як мошини Windows

Вазифа оддӣ буд, 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.

Кор катъ шудааст, онро зуд ислох кардан даркор

Docker ва VMWare Workstation дар як мошини Windows

Тавассути googling маълум шуд, ки ин хато аз сабаби номувофиқ будани VMWare Workstation ва Hyper-V дар як мошин рух медиҳад. Мушкилот маълум аст ва чунин як ҳалли расмии VMWare вуҷуд дорад ислоҳ, бо истинод ба пойгоҳи дониши Microsoft Идоракунии Guard Credential Windows Defender. Ҳалли ин аст, ки ғайрифаъол кардани Defender Credential Guard (банди 4-и бахши Хомӯш кардани Windows Defender Credential Guard ба ман кӯмак кард):

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 ба кори муқаррарӣ бармегардад ва мо дар ҳамон ҷое хоҳем буд, ки пеш аз насби докер ҷойгир аст.

Ман то ҳол роҳи ҳалли оштӣ додани Hyper-V ва VMWare Workstation пайдо накардаам, умедворам, ки онҳо дар версияҳои нав дӯст хоҳанд шуд.

Роҳи дигар

Ман муддати тӯлонӣ ба VMWare Workstation бо мақсадҳои гуногун пайваст шудам, кӯшиш кардам, ки ба Hyper-V ва VirtualBox гузарам, аммо функсия ниёзҳои маро қонеъ накард ва ман то имрӯз дар он ҷо мондаам. Маълум шуд, ки роҳи ҳалли якҷоя кардани VMWare, Docker ва VSCode дар як муҳити корӣ мавҷуд аст.

Мошини Docker — ба шумо имкон медиҳад, ки Docker Engineро дар ҳости маҷозӣ кор кунед ва ба он ҳам аз фосилаи дур ва ҳам ба таври маҳаллӣ пайваст шавед. Ва барои он як драйвери мутобиқати VMWare Workstation мавҷуд аст, пайванд ба github

Ман махсусан дастурҳои насбкуниро такрор намекунам, танҳо рӯйхати компонентҳо:

  1. Қуттии асбобҳои Docker (Мошини Docker дохил карда шудааст)
  2. Ронандаи Docker Machine VMware Workstation
  3. Мизи кории докер

Бале, мутаассифона, Docker Desktop низ лозим мешавад. Агар шумо онро вайрон карда бошед, пас онро дубора насб кунед, аммо ин дафъа қуттии қайдро дар бораи ворид кардани тағирот ба OS хориҷ кунед, то ки VMWare Workstation дубора вайрон нашавад.

Ман мехоҳам фавран қайд намоям, ки ҳама чиз аз як корбари оддӣ хуб кор мекунад, барномаҳои насбкунӣ ҳангоми зарурат афзоиш додани ҳуқуқҳоро талаб мекунанд, аммо ҳама фармонҳо дар сатри фармон ва скриптҳо аз корбари ҷорӣ иҷро карда мешаванд.

Дар натиҷа, фармон:

$ docker-machine create --driver=vmwareworkstation dev

мошини маҷозӣ аз Boot2Docker сохта мешавад, ки дар дохили он Docker насб карда мешавад.

Ин мошини маҷозӣ метавонад ба интерфейси графикии VMWare Workstation бо кушодани файли мувофиқи vmx замима карда шавад. Аммо ин шарт нест, зеро акнун VSCode бояд аз ҷониби PowerShell ҳамчун скрипт оғоз карда шавад (бо баъзе сабабҳо, docker-machine ва docker-machine-driver-vmwareworkstation дар папкаи бин ҷойгир шудаанд):

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

VSCode барои кор бо код дар мошини маҳаллӣ ва Docker дар мошини виртуалӣ кушода мешавад. Плагин Docker барои Visual Studio Code ба шумо имкон медиҳад, ки контейнерҳоро дар мошини виртуалӣ бидуни ворид шудан ба консол ба осонӣ идора кунед.

Мушкилот:

Ҳангоми эҷоди мошини докер, раванди ман ях кард:

Waiting for SSH to be available...

Docker ва VMWare Workstation дар як мошини Windows

Ва пас аз чанд вақт он бо кӯшишҳои бештар барои барқарор кардани пайвастшавӣ бо мошини виртуалӣ анҷом ёфт.

Ин ҳама дар бораи сиёсати сертификатсия аст. Ҳангоми сохтани мошини маҷозӣ шумо феҳристи ~.dockermachinemachinesdev хоҳед дошт.Дар ин директория файлҳои сертификатсия барои пайвастшавӣ тавассути SSH мавҷуданд: id_rsa, id_rsa.pub. OpenSSH метавонад аз истифодаи онҳо даст кашад, зеро фикр мекунад, ки онҳо мушкилоти иҷозат доранд. Танҳо мошини докер-мошин ба шумо дар ин бора чизе намегӯяд, он то даме ки дилгир нашавад, дубора пайваст мешавад.

ҳалли: Ҳамин ки эҷоди мошини нави виртуалӣ оғоз мешавад, ба феҳристи ~.dockermachinemachinesdev равед ва ҳуқуқҳоро ба файлҳои муайяншуда як-як иваз кунед.

Соҳиби файл бояд корбари ҷорӣ бошад, танҳо корбари ҷорӣ ва СИСТЕМА дастрасии пурра доранд, ҳамаи корбарони дигар, аз ҷумла гурӯҳи администраторҳо ва худи маъмурон бояд нест карда шаванд.

Мушкилоти табдил додани роҳҳои мутлақ аз формати Windows ба Posix ва ҳаҷми ҳатмии дорои истиноди рамзӣ низ метавонад вуҷуд дошта бошад. Аммо ин ҳикояи дигар аст.

Манбаъ: will.com

Илова Эзоҳ