Update3: 06.2019
Một số ý kiến nói rằng câu trả lời không rõ ràng, tôi sẽ cố gắng làm rõ.
TL; DR:
Hỏi: Các container Windows có thể chạy trên Linux không?
A: Không. Họ không thể.
Các bộ chứa đang sử dụng các trình điều khiển và tài nguyên của Hệ điều hành bên dưới, vì vậy các bộ chứa Windows chỉ có thể chạy trên Windows và các bộ chứa Linux chỉ có thể chạy trên Linux.
Q: Nhưng còn Docker cho Windows thì sao? Hoặc các giải pháp dựa trên VM khác?
Trả lời: Docker cho Windows cho phép bạn mô phỏng các bộ chứa Linux đang chạy trên Windows , nhưng dưới vỏ bọc , máy ảo Linux được tạo, do đó, các bộ chứa Linux vẫn chạy trên Linux và các bộ chứa Windows đang chạy trên Windows .
Phần thưởng: Đọc bài viết rất hay này về việc chạy các container Linux docker trên Windows.
H: Vậy, tôi nên làm gì với ứng dụng .Net Framework 462, nếu tôi muốn chạy trong một container?
A: Nó phụ thuộc. Sau một số khuyến nghị:
- Nếu có thể - di chuyển đến .Net Core. Do .Net Core mang đến sự hỗ trợ cho hầu hết các tính năng chính của .Net Framework và .Net Framework 4.8 sẽ là phiên bản cuối cùng của .Net framework
Nếu bạn không thể di chuyển sang .Net Core - Như @Sebastian đã đề cập - bạn có thể chuyển đổi thư viện của mình sang .Net Standard và có 2 phiên bản ứng dụng - một trên .Net Framework 4.6.2 và một trên .Net Core - không phải luôn luôn rõ ràng, Visual Studio hỗ trợ nó khá tốt (với đa mục tiêu), nhưng một số phụ thuộc có thể cần được chăm sóc thêm.
(Ít khuyến nghị hơn) Trong một số trường hợp, bạn có thể chạy các thùng chứa windows. Các bộ chứa Windows đang ngày càng hoàn thiện hơn, với sự hỗ trợ tốt hơn trong các nền tảng như Kubernetes. Nhưng để có thể chạy mã .Net Framework, bạn vẫn cần chạy trên hình ảnh cơ sở của "Server Core", chiếm khoảng 1,4 GB. Trong các trường hợp hiếm gặp tương tự, bạn có thể di chuyển mã của mình sang .Net Core, nhưng vẫn chạy trên các máy chủ Windows Nano, với kích thước hình ảnh là 95 MB.
Để lại những cập nhật cũ cho lịch sử
Update2: 08,2018
Nếu bạn đang sử dụng Docker-cho-Windows, bạn có thể chạy ngay bây giờ cả hai cửa sổ và container Linux đồng thời : https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- và-linux-container-đồng thời /
Phần thưởng: Không liên quan trực tiếp đến câu hỏi, nhưng giờ đây bạn có thể chạy không chỉ chính bộ chứa linux mà còn cả người điều phối như kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-av Available-in -docker-desktop-ổn định-kênh /
Cập nhật vào năm 2018:
Câu trả lời ban đầu nói chung là đúng, NHƯNG vài tháng trước, docker đã thêm tính năng thử nghiệm LCOW ( kho github chính thức ).
Từ bài này :
Không Docker cho Windows đã chạy các container Linux? Đúng rồi. Docker cho Windows có thể chạy các thùng chứa Linux hoặc Windows, với sự hỗ trợ cho các thùng chứa Linux thông qua Hyper-V Moby Linux VM (kể từ Docker cho Windows 17.10, VM này dựa trên LinuxKit).
Thiết lập để chạy các thùng chứa Linux với LCOW đơn giản hơn nhiều so với kiến trúc trước đây nơi Hyper-V Linux VM chạy trình nền Linux Docker, cùng với tất cả các thùng chứa của bạn. Với LCOW, trình nền Docker chạy như một quy trình Windows (giống như khi chạy Docker Windows container) và mỗi khi bạn khởi động Linux container Docker sẽ khởi chạy một trình ảo hóa Hyper-V tối thiểu chạy VM với nhân Linux, runc và các tiến trình chứa chạy trên đỉnh.
Bởi vì chỉ có một trình nền Docker và vì trình nền đó hiện đang chạy trên Windows, nên tôi sẽ sớm có thể chạy các bộ chứa Docker của Windows và Linux, trong cùng một không gian tên mạng . Điều này sẽ mở khóa rất nhiều tình huống phát triển và sản xuất thú vị cho người dùng Docker trên Windows.
Nguyên:
Như đã đề cập trong các bình luận của @PanagiotisKanavos, các container không dành cho ảo hóa và chúng đang sử dụng tài nguyên của máy chủ . Kết quả là, bây giờ windows container không thể chạy "nguyên trạng" trên máy linux.
Nhưng - bạn có thể làm điều đó bằng cách sử dụng VM - vì nó hoạt động trên windows. Bạn có thể cài đặt Windows VM trên máy chủ linux, điều này sẽ cho phép chạy các thùng chứa windows.
Với nó, IMHO chạy nó theo cách này trên môi trường SẢN XUẤT sẽ không phải là ý tưởng tốt nhất.
Ngoài ra, câu trả lời này cung cấp thêm chi tiết.