同じ 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 Knowledge Baseへのリンク付き 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 を XNUMX つの作業環境で友達にする方法があることがわかりました。

Dockerマシン - 仮想ホスト上で Docker エンジンを実行し、リモートとローカルの両方で接続できるようにします。 それには VMWare Workstation 互換ドライバーがあります。 githubへのリンク

インストール手順については特に説明しません。材料のリストだけを説明します。

  1. ドッカーツールボックス (Dockerマシン 含まれています)
  2. Docker マシン VMware ワークステーション ドライバー
  3. Dockerデスクトップ

はい、残念ながら Docker Desktop も必要になります。 破壊した場合は、再度インストールします。ただし、今回は、VMWare Workstation が再び壊れないように、OS の変更に関するチェックボックスを削除します。

単純なユーザーからはすべてが正常に動作することにすぐに注意してください。インストール プログラムは必要に応じて権限の昇格を要求しますが、コマンド ライン上のすべてのコマンドとスクリプトは現在のユーザーから実行されます。

その結果、チームは次のようになりました。

$ docker-machine create --driver=vmwareworkstation dev

Boot2Docker から、Docker となる開発仮想カが内部に作成されます。

この仮想マシンは、対応する vmx ファイルを開くことによって VMWare Workstation GUI に接続できます。 ただし、VSCode は PowerShell スクリプトを実行する必要があるため、これは必要ありません (何らかの理由で、私の docker-machine と docker-machine-driver-vmwareworkstation は bin フォルダーに配置されました)。

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

VSCode が開き、ローカル マシン上のコードと仮想マシンの Docker を操作できるようになります。 プラグイン Visual Studio コード用の Docker を使用すると、コンソールにアクセスすることなく、仮想マシン内のコンテナを簡単に管理できます。

難点:

docker-machine を作成する過程で、プロセスがハングしました。

Waiting for SSH to be available...

同じ Windows マシン上の Docker と VMWare Workstation

そしてしばらくすると、仮想マシンとの接続を確立しようとする試みが過剰に行われて終了しました。

すべては証明書ポリシーに関するものです。 仮想マシンを作成すると、~.dockermachinemachinesdev ディレクトリが作成され、このディレクトリに SSH 経由で接続するための証明書ファイル (id_rsa、id_rsa.pub) が存在します。 OpenSSH は、権限に問題があると考えて、それらの使用を拒否する場合があります。 docker-machine だけがこれについて何も通知しませんが、飽きるまで単に再接続します。

解決策: 新しい仮想マシンの作成が開始されるとすぐに、~ .dockermachinemachinesdev ディレクトリに移動し、指定されたファイルに対する権限を一度に XNUMX つずつ変更します。

ファイルは現在のユーザーが所有する必要があり、現在のユーザーと SYSTEM のみがフル アクセスを持ち、管理者グループと管理者自身を含む他のすべてのユーザーは削除する必要があります。

また、絶対パスを Windows から Posix 形式に変換する際や、シンボリック リンクを含むボリュームをバインドする際にも問題が発生する可能性があります。 しかし、それはまた別の話です。

出所: habr.com

コメントを追加します