• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Quản trị hệ thống

Windows Container, Docker trên Windows Server

@admiz by @admiz
03/05/2021
in Quản trị hệ thống
0
Windows Container, Docker Trên Windows Server 60902c3829ece.png

Gần đây cả Docker và M$ đều thông báo là có thể chạy Docker Container trên Windows Server. Với mình đây là tin khá là shock vì trước giờ mình luôn cho rằng việc chạy Docker engine trực tiếp trên Windows (không thông qua máy ảo Linux) hoặc tạo một container với OS không phải là Linux là điều không thể. Thế nên mình quyết định là tìm hiểu xem nó là cái gì.

Trước khi bắt đầu thì quay ngược trở lại các phiên bản trước đây của Docker và xem thử một số mối liên hệ giữa Docker với Windows như thế nào.

1. Giới thiệu

Về container thì nó không phải là một công nghệ mới (không phải do Docker phát minh ra mà nó đã có từ trước đó khá lâu rồi với các ứng dụng như chroot trên Linux, jails trên BSD, zone trên Solaris hoặc một công nghệ khá phổ biến là OpenVZ. Đặc điểm của container là share kernel giữa guest (container) và host (máy thật) nên tất nhiên OS của container và máy thật phải giống nhau.

Để có thể tạo ra container với đặc tính như: (thực ra các công nghệ ảo hóa cũng tương tự)

• Isolation (user, process, filesystem …)

• Limit resource (memory, cpu, I/O …)

• Security

• …

Trước phiên bản 0.9, Docker (engine) sử dụng LXC như một layer trung gian để giao tiếp với Kernel Linux. Kernel của Linux cung cấp một số tính năng giúp tạo container với các đặc tính trên như namespace, cgroups, Apparmor, SELinux … Kể từ sau phiên bản 0.9, Docker cung cấp một driver là libcontainer cho phép Docker engine giao tiếp trực tiếp xuống kernel của Linux mà không cần thông qua LXC (LXC là một tùy chọn)

Windows Container, Docker trên Windows Server  - Ảnh 1.

Như ta thấy là để có thể tạo ra một container có khả năng độc lập với máy thật, có thể giới hạn được tài nguyên và cung cấp tính bảo mật thì Docker cần Linux (cần các đặc tính của nhân Linux)

Windows Container, Docker trên Windows Server  - Ảnh 2.

2. Docker với Windows

Ta sẽ nói về 2 component cụ thể đó là docker client và docker engine.

2.1 Docker client

Có thể chạy Docker cli (Docker client) trên Windows.

Trong bài mình có giới thiệu là Docker sử dụng kiến trúc client-server.

Docker Client sẽ nói chuyện với Docker Engine thông qua một RESTful API, để thực thi các lệnh như build, ship và run một container.

Nên bản chất là Docker client hoàn toàn không phụ thuộc vào Linux. Mã nguồn của docker viết bằng Go, có thể compile ra binary và chạy trên Windows bình thường, xem thêm pull request.

2.2 Docker Engine

Ở những phiên bản đầu tiên, để có thể chạy Docker engine trên Windows bạn có thể sử dụng 2 cách

• Tự cài virtualbox, vmware, sau đó cài một máy ảo Linux (Ubuntu, CentOS) và cài Docker Engine lên máy ảo này

• Sử dụng boot2docker (tinycore), boot2docker sẽ làm hết cho bạn, kể cả việc giao tiếp từ Windows vào VM rồi vào trong container luôn

Ở phiên bản sau này (1.12), Docker cung cấp Docker cho cả Mac và Windows.

Điểm khác biệt là bạn không nhất thiết phải dùng VirtualBox. Đối với Mac thì Docker Engine sẽ chạy trên xhyve Virtual Machine (VM), xhyve là một giải pháp ảo hóa lightweight trên OSX. Đối với Windows thì Docker Engine chạy trên công nghệ ảo hóa của Windows là Hyper-V. Cả 2 đều dùng Alpine Linux, một distribution vô cùng nhỏ ngọn.

Tóm lại, để chạy Docker Engine với container là Linux trên Windows thì kiểu gì ta cũng phải chạy qua máy ảo.

3. Windows Container vs Docker

Trong phần này, mình muốn giải quyết và trả lời 3 vấn đề:

• Windows Container là gì?

• Làm thế nào có thể tạo ra một container Windows (không phải là Linux như ở đầu bài nói).

• Làm thế nào để có thể sử dụng Docker Engine trên Windows (Docker engine có thể quản lý các Windows Container)

3.1 Windows Container

Trong phần quick_start, M$ giới thiệu Windows container tương tự các đặc tính của container ở trên mục [1], nghĩa là nó cũng isolated, cũng limit resource và tạo ra một môi trường portable.

Windows Container được chia làm 2 loại:

• Windows Server Containers: Cung cấp một môi trường độc lập cho ứng dụng với kĩ thuật namespace isolation. Windows Server Container sẽ share kernel với máy thật (host) và với tất cả các container khác

• Hyper-V Containers: mở rộng cơ chế isolation được cung cấp bởi Windows Server Containers bằng cách chạy mỗi container trên một máy ảo (VM) được tối ưu. Tất nhiên khi đã chạy container trên máy ảo thì kernel của Hyper-V Container không nhất thiết phải share với máy thật. (Mỗi hyper-v container sẽ được chạy trên một máy ảo, 10 container thì có 10 máy ảo, chưa rõ là OS cho máy ảo là gì)

Tóm lại: Windows Container mang đặc tính của container, và tất nhiên container guest và host phải share kernel với nhau. Windows Container sẽ chạy OS là Windows và đồng nghĩa là nó share kernel Windows với máy chủ.

3.2 Làm thế nào có thể tạo ra một container trên Windows

Để có thể chạy một container Windows thì OS của container và OS của host phải giống nhau. Ở đây tất nhiên OS của cả hai đều là Windows.

Nhưng vấn đề là để có thể cung cấp khả năng isolated và limit resource thì ta cần ít nhất 2 tính năng được hỗ trợ bởi kernel Linux đó là namespace và cgroups HOẶC Windows phải làm cách nào đó để hỗ trợ tính năng nào đó có chức năng tương tự vào kernel của mình.

Theo tài liệu của M$ thì khả năng là các tính năng này mới được thêm vào từ phiên bản Windows 10 và Windows Server 2016

Windows Container, Docker trên Windows Server  - Ảnh 3.

Từ hình này mình đoán rằng M$ đã phát triển thêm một số tính năng cho kernel Windows tương tự kernel Linux để hỗ trợ việc tạo Container. Job object có chức năng tương tự cgroups cho việc giới hạn tài nguyên, Object Namespace, Process Table, Networking tương tự với namespacecho việc isolation ….

3.3 Làm thế nào để có thể sử dụng Docker Engine trên Windows

Docker Engine sẽ giúp chúng ta các tác vụ liên quan đến việc quản lý các đối tượng trong hệ sinh thái container như container, image, volume, network. Nói chung khi tay chạy các lệnh docker run, docker build, docker ps thì docker client sẽ giao tiếp với docker engine để trả về cho ta các tác vụ tương ứng.

Docker Engine viết bằng Go, nên cũng có thể build ra binary và chạy trên Windows được. Vấn đề là chỉ cần Kernel hỗ trợ các tính năng tương tự Linux là được. Vấn đề này đã được M$ chủ động giải quyết trong kernel của họ, như mục 3.2 mình có giải thích. Đây là hợp tác giữa Docker Inc. và M$.

Đến đây thì phát sinh một số câu hỏi:

• Docker engine cho Linux và Windows là chung một source code hay là hai dự án độc lập.

• Kernel Windows đã hỗ trợ tốt các tính năng cgroup, namespace, unionfs như Linux chưa. Nếu Docker engine chung source code thì liệu code có phình ra thêm hay không?

Mình không tìm được câu trả lời nhưng cá nhân mình nghĩ khả năng cao là Docker Engine cho 2 platform này đều dùng chung source code. Nếu chung source code thì sẽ có thể phát sinh các vấn đề như:

• Hai nền tảng khác nhau, nên khả năng không thể hỗ trợ tốt cả 2 nền tảng như nhau được

• Code phình ra và có thể không handle tốt vì M$ mới phát triển các tính năng để hỗ trợ container

4. Kết luận

Container là công nghệ mà container guest và container host phải share kernel với nhau. Nên dù là Windows Container hay Linux Container thì guest và host phải giống nhau về OS. Nghĩa là Windows container chỉ chạy trên host Windows, Linux container chỉ chạy trên host Linux.

• Việc Docker hỗ trợ Windows Container làm phong phú thêm hệ sinh thái Container. Tuy nhiên nếu tích hợp chung codebase thì có thể làm mọi thứ trở nên phức tạp hơn

• Từ phiên bản 1.12 với việc tích hợp sẵn tính năng orchestration vào  Docker Engine, Docker gặp khá nhiều phản ứng không tốt từ cộng đồng.

Theo kipalog.com

>> Tham khảo thêm: Sở hữu Docker Image đầu tiên

Kể từ ngày 05/11/2018, VCCloud chính thức đổi tên thành NQ Computing – là nhà cung cấp các dịch vụ đám mây hàng đầu tại Việt Nam hiện nay với các dịch vụ nổi bật như: NQ Computing Server, NQ News CDN, NQ News Load Balancer, NQ News Pre-built Application, NQ News Business Mail, NQ News Simple Storage. Hãy tăng tốc thích nghi cho doanh nghiệp cùng các giải pháp công nghệ của NQ Computing tại đây.

Post Views: 165
Previous Post

Dark data – Khái niệm dữ liệu tưởng mới mà không mới

Next Post

Email tracking – Theo dõi email là gì và cách phòng chống ?

Related Posts

Quicktime Player Logo650 1
macOS

Cách ghép video trên macOS bằng QuickTime Player

26/12/2021
Kali Linux 2021 4 700 1
Linux

Kali Linux 2021.4: Thêm 9 công cụ mới và hỗ trợ tốt hơn cho Apple M1

26/12/2021
Openbsd La Gi 1
Linux

OpenBSD là gì? Đây là mọi thứ bạn cần biết về hệ điều hành này!

26/12/2021
Mac Os Xoa Ung Dung Cai Dat Logo640 1
macOS

Cách gỡ, xóa ứng dụng trên Mac OS

26/12/2021
Tim Thu Vien Anh Photos Library Tren May Mac700 1
macOS

Hướng dẫn tìm thư viện ảnh Photos Library trên máy Mac

26/12/2021
So Sanh Macbook Pro Macbook Air Va Ipad Pro 1
macOS

So sánh MacBook Pro 13 inch với MacBook Air và iPad Pro

26/12/2021
Next Post
Email Tracking – Theo Dõi Email Là Gì Và Cách Phòng Chống ? 60902c3a16f2f.jpeg

Email tracking - Theo dõi email là gì và cách phòng chống ?

Bài mới nhất

Tổng Hợp 10 Mẫu Email Marketing Giới Thiệu Sản Phẩm Nổi Bật Nhất Hiện Nay 612d0da97658c.png

Tổng hợp 10 mẫu email marketing giới thiệu sản phẩm nổi bật nhất hiện nay

07/05/2025
Dịch Vụ Thiết Kế Website Tại Hải Dương Chuyên Nghiệp, ấn Tượng Và Uy Tín 612d25752b14f.png

Dịch vụ thiết kế website tại Hải Dương chuyên nghiệp, ấn tượng và uy tín

06/05/2025
Top Công Ty Thiết Kế Website Tại Biên Hòa Chuyên Nghiệp, Chuẩn Seo 612d259494e93.jpeg

Top công ty thiết kế website tại Biên Hòa chuyên nghiệp, chuẩn SEO

06/05/2025
Top Công Ty Thiết Kế Website Tại Vinh – Nghệ An Uy Tín 612d259a9cae3.jpeg

Top công ty thiết kế website tại Vinh – Nghệ An uy tín

05/05/2025
Top 10 Công Ty Thiết Kế Website Tại Nha Trang Chuyên Nghiệp 612d0a9ad018b.jpeg

Top 10 công ty thiết kế website tại Nha Trang chuyên nghiệp

05/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution