Docker và VMWare Workstation trên cùng một máy Windows

Nhiệm vụ rất đơn giản, hãy đặt Docker trên máy tính xách tay Windows đang hoạt động của tôi, vốn đã có vườn thú. Tôi đã cài đặt Docker Desktop và tạo các thùng chứa, mọi thứ đều ổn, nhưng tôi nhanh chóng phát hiện ra rằng VMWare Workstation đã ngừng chạy máy ảo với một lỗi:

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

Công việc đã dừng lại, nó là khẩn cấp để sửa chữa

Docker và VMWare Workstation trên cùng một máy Windows

Qua googling, người ta phát hiện ra rằng lỗi này xảy ra do sự không tương thích của VMWare Workstation và Hyper-V trên cùng một máy. Vấn đề đã được biết và có một giải pháp VMWare chính thức như thế này sửa, với một liên kết đến Cơ sở Kiến thức Microsoft Quản lý Windows Defender Credential Guard. Giải pháp là tắt Trình bảo vệ thông tin xác thực của Bộ bảo vệ (mục 4 trong phần Tắt Bộ bảo vệ thông tin xác thực của Bộ bảo vệ Windows đã giúp tôi):

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

Sau khi khởi động lại, Windows sẽ hỏi bạn có thực sự muốn tắt Defender Credential Guard hay không. Đúng! Bằng cách này, VMWare Workstation sẽ trở lại hoạt động bình thường và chúng ta sẽ thấy mình ở đúng vị trí như trước khi cài đặt docker.

Tôi vẫn chưa tìm được giải pháp dung hòa giữa Hyper-V và VMWare Workstation, hy vọng chúng sẽ trở thành bạn bè trong các phiên bản mới.

Cách khác

Tôi đã nghiện VMWare Workstation từ lâu với nhiều mục đích khác nhau, tôi đã cố gắng thoát khỏi Hyper-V và VirtualBox, nhưng chức năng này không đáp ứng được nhiệm vụ của tôi và vì vậy tôi ngồi cho đến ngày nay. Hóa ra có một giải pháp để kết bạn với VMWare, Docker và VSCode trong một môi trường làm việc.

Máy Docker - cho phép bạn chạy Docker Engine trên một máy chủ ảo và kết nối với nó cả từ xa và cục bộ. Và có trình điều khiển tương thích VMWare Workstation cho nó, liên kết đến github

Tôi sẽ không đặc biệt kể lại các hướng dẫn cài đặt, chỉ có danh sách các thành phần:

  1. Hộp công cụ Docker (Máy Docker bao gồm)
  2. Máy Docker Trình điều khiển máy trạm VMware
  3. Máy tính để bàn Docker

Vâng, thật không may, Docker Desktop cũng sẽ cần thiết. Nếu bạn đã phá hủy nó, hãy cài đặt lại, nhưng lần này hãy xóa hộp kiểm về việc thực hiện các thay đổi đối với HĐH để không phá vỡ VMWare Workstation một lần nữa.

Tôi muốn lưu ý ngay rằng mọi thứ đều hoạt động tốt với một người dùng đơn giản, các chương trình cài đặt sẽ yêu cầu tăng quyền khi họ cần, nhưng tất cả các lệnh trên dòng lệnh và tập lệnh đều được thực thi từ người dùng hiện tại.

Kết quả là, nhóm:

$ docker-machine create --driver=vmwareworkstation dev

từ Boot2Docker, một dev virtualka sẽ được tạo bên trong đó sẽ là Docker.

Máy ảo này có thể được gắn vào VMWare Workstation GUI bằng cách mở tệp vmx tương ứng. Nhưng điều này là không cần thiết, vì VSCode bây giờ sẽ cần chạy tập lệnh PowerShell (vì lý do nào đó, docker-machine và docker-machine-driver-vmwareworkstation của tôi đã kết thúc trong thư mục bin):

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

VSCode sẽ mở để hoạt động với mã trên máy cục bộ và docker trong máy ảo. cắm vào Docker cho mã Visual Studio cho phép bạn quản lý các thùng chứa trong máy ảo một cách thuận tiện mà không cần vào bảng điều khiển.

Nỗi khó khăn:

Trong quá trình tạo docker-machine, quy trình bị treo đối với tôi:

Waiting for SSH to be available...

Docker và VMWare Workstation trên cùng một máy Windows

Và sau một thời gian, nó kết thúc với quá nhiều nỗ lực thiết lập kết nối với máy ảo.

Đó là tất cả về chính sách chứng chỉ. Khi tạo máy ảo bạn sẽ có thư mục ~.dockermachinemachinesdev trong thư mục này sẽ có các file chứng chỉ để kết nối qua SSH: id_rsa, id_rsa.pub. OpenSSH có thể từ chối sử dụng chúng vì cho rằng chúng có vấn đề về quyền. Chỉ docker-machine sẽ không cho bạn biết bất cứ điều gì về điều này, mà sẽ chỉ kết nối lại cho đến khi nó chán.

giải pháp: Ngay khi quá trình tạo một máy ảo mới bắt đầu, chúng tôi sẽ chuyển đến thư mục ~ .dockermachinemachinesdev và thay đổi quyền đối với các tệp đã chỉ định, từng tệp một.

Tệp phải thuộc sở hữu của người dùng hiện tại, chỉ người dùng hiện tại và HỆ THỐNG mới có toàn quyền truy cập, tất cả người dùng khác, bao gồm nhóm quản trị viên và chính quản trị viên, phải bị xóa.

Cũng có thể có sự cố khi chuyển đổi đường dẫn tuyệt đối từ định dạng Windows sang Posix và liên kết các ổ chứa liên kết tượng trưng. Nhưng đó là một câu truyện khác.

Nguồn: www.habr.com

Thêm một lời nhận xét