Có thể có docker chạy bên trong vmware?


24

Tôi chạy máy trạm vmware cho nhu cầu nhà phát triển của mình và phải duy trì các máy ảo khác nhau cho các môi trường khác nhau.

Docker dường như cho phép chạy các môi trường khác nhau trong các container, do đó

  1. Bên trong Windows 10 x64 VM, tôi có thể chạy docker và sử dụng các hình ảnh và vùng chứa khác nhau để phát triển, xây dựng và kiểm tra mã của mình không? (Hãy nhớ rằng tôi đang chạy dev enConnionment trong VMware Workstation trong khi docker sử dụng VirtualBox)

  2. Làm cách nào để gửi / đưa ứng dụng này của tôi (mã + cơ sở dữ liệu + web api + .....) vào sản xuất? Máy sản xuất có cần chạy docker không?

Xin hãy giúp làm rõ.

Cập nhật

Theo VMWare, ý tôi là máy trạm VMWare pro.

Câu trả lời:


14

, hoàn toàn có thể chạy Docker trong VM. Docker là một giải pháp ảo hóa nhẹ, nó không ảo hóa phần cứng nên bạn sẽ không bị ảnh hưởng bởi các vấn đề điển hình cho các máy ảo lồng nhau.

Liên kết cổng có thể hơi khó khăn một chút, bởi vì bằng cách nào đó bạn sẽ phải kết nối máy ảo dev-env của mình trong VMware với Docker VM trong VirtualBox.

Bạn cũng có thể gặp sự cố nếu bạn muốn hiển thị các thư mục của máy chủ cho một dịch vụ trong bộ chứa Docker. Các hệ thống tệp của Windows bị giới hạn so với các hệ thống Linux về độ chi tiết cho phép và một số dịch vụ không như vậy. (vấn đề này không dành riêng cho Docker)

Nói chung, ứng dụng của bạn không bị khóa với Docker trong sản xuất. Các dịch vụ Dockerized giao tiếp với thế giới thông qua mạng, không khác gì những dịch vụ thông thường thường làm. Tuy nhiên, một ứng dụng được thiết kế với Docker (hay nói chung hơn là đám mây) có thể dễ phục hồi hơn trước các thất bại và dễ bảo trì hơn.


6

Blog này nói về chính xác cách sử dụng Docker trên Windows với VMWare Workstation. Bạn thậm chí có thể sử dụng Windows 7.

https://stefanscherer.github.io/yes-you-can-docker-on-windows-7/

Đầu tiên cài đặt trình quản lý gói Chocolatey cho windows (đây là lệnh một dòng)

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

sau đó cài đặt Docker để sử dụng máy trạm VMWare

choco install -y docker  
choco install -y docker-machine  
choco install -y docker-machine-vmwareworkstation  

Tạo một vm mặc định

docker-machine --native-ssh create -d vmwareworkstation default  

Đặt các biến môi trường của bạn

docker-machine env | iex

Bây giờ bạn đã sẵn sàng để bắt đầu.


Thông minh! Cảm ơn đã chia sẻ điều này. PS: Dòng cuối cùng dành cho PowerShell, không có "| iex" sẽ hoạt động trong cmd
Dmitry Gusarov

Chocolatey là một điều mới mẻ đối với tôi, đây là một điểm khởi đầu tốt đẹp: hanselman.com/blog/
Kẻ

1
Chỉ trong trường hợp bất kỳ ai khác đã thử điều này mà không cần đọc liên kết, lệnh "Tạo một vm mặc định" sẽ là: docker-machine --native-ssh create -d vmwareworkstation default(Lưu ý thiếu "-")
Neil

2
  1. Có, bạn có thể chạy docker trên Windows. Windows trên VMWare cũng hoạt động. Chúng tôi chạy docker trên các máy chủ Linux trên VMWare.
  2. Thông minh nhất sẽ là có docker trên máy sản xuất của bạn, nhưng có thể sao chép dữ liệu của bạn từ các container. Tôi không khuyên bạn mặc dù.
    Bạn có thể sử dụng docker saveđể lưu hình ảnh docker của bạn vào tập tin.
    Tôi nghĩ rằng đáng để đề cập rằng không nên chạy một số ứng dụng trong cùng một vùng chứa và không nên lưu trữ dữ liệu bên trong các thùng chứa của bạn, bạn nên sử dụng khối lượng cho điều đó.

Cảm ơn câu trả lời của bạn nhưng vui lòng làm rõ Bạn đã nói "Windows trên VMWare cũng hoạt động" nhưng ý bạn là "Docker trên VMWare cũng hoạt động"?
Hamza Ahmed Zia

@ HamzaAhmedZia "VMWare" Chính xác là gì? ESXi? Máy trạm? Hãy cụ thể và chỉnh sửa câu hỏi của bạn. Máy trạm chỉ tồn tại trên Linux và Windows.
Ramhound

@Ramhound Ý tôi là máy trạm. Câu hỏi cập nhật
Hamza Ahmed Zia

@ HamzaAhmedZia vì vậy trong ngữ cảnh của Workstation, tác giả của câu trả lời này cho biết, bạn có thể chạy Docker trong máy ảo Windows VMWare Workstation VM.
Ramhound

@Mikael Đề xuất của bạn cho việc vận chuyển đến sản xuất là gì vì bạn nói rằng bạn không khuyến nghị sao chép dữ liệu từ các container?
Hamza Ahmed Zia

0

Có một sự khác biệt lớn giữa máy chủ docker (Linux hoặc Windows):

  • Máy chủ Linux không cần bất kỳ công nghệ ảo hóa nào. Vì vậy, trong máy trạm Vmware, bạn có thể cài đặt một Linux tiêu chuẩn, sau đó là công cụ docker và chạy bất kỳ container nào mà không gặp vấn đề gì
  • Máy chủ Windows có một yêu cầu khác bởi vì trong phần mềm này, nó tạo ra một máy ảo Hyper V Linux (chi tiết trong https://rancher.com/the-similarities-and-differences-b between- windows- and-linux -contersers / )

Vì vậy, trên máy chủ docker Windows trong Máy trạm Vmware (trên Windows vật lý của bạn), bạn có một máy ảo HyperV Linux lồng nhau! Đó không phải là một vấn đề lớn, chỉ cần cẩn thận để kích hoạt ảo hóa lồng nhau.

Tiếng Pháp


Điểm đó về việc Windows lưu trữ HyperV VM là không chính xác nếu chạy Docker cho Windows ở chế độ Windows Container và sử dụng LCoW song song. Nó có các vấn đề khác, nhưng các bài báo được liên kết lập trường về thuyết bất khả tri của Docker dựa trên hệ điều hành máy chủ là thiển cận nhất dựa trên việc Moby Project đang hướng tới docker dựa trên Windows container trên Win 10. Nhưng tôi chỉ chìm một tuần để khám phá ra rằng cạnh chảy máu vẫn đang rút máu, và không lùi xuống mức nguy hiểm chỉ dẫn đầu. Tại thời điểm này, nó trông giống như sáu tháng nữa cho đến khi nó sẵn sàng như một tài xế hàng ngày.
Tetsujin no Oni

0

Chạy Docker container đang mang lại các vấn đề ràng buộc cổng ..!

Có phải là một cách thực hành tốt để chạy docker bên trong máy ảo .. Kiến trúc để bạn tham khảo

Hệ điều hành máy chủ -> VirtualMachine -> Hypervisor -> Hệ điều hành máy chủ -> Docker

Đó có phải là một thực hành tốt .. :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.