Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Docker trên Windows Server: Nền tảng quan trọng cho Container hiện đại

    Docker trên Windows Server: Nền tảng quan trọng cho Container hiện đại

    Docker là gì?

    Docker là nền tảng phổ biến nhất hiện nay để xây dựng, phân phối và vận hành các ứng dụng dạng Container. Một Docker Container không chỉ chứa ứng dụng mà còn bao gồm toàn bộ môi trường cần thiết để ứng dụng hoạt động, chẳng hạn như:
    • Mã nguồn (Code)
    • Runtime
    • Thư viện phụ thuộc (Dependencies)
    • Công cụ hệ thống (System Tools)
    • File cấu hình
    Nhờ đó, ứng dụng có thể hoạt động nhất quán từ môi trường phát triển đến môi trường sản xuất (môi trường thật - production). Một trong những ưu điểm lớn nhất của Docker là tuân thủ các tiêu chuẩn mở, cho phép Container chạy trên nhiều nền tảng khác nhau như Windows, Linux, macOS, Môi trường On-Premises, Azure, AWS hoặc các Cloud Provider khác...

    Các thành phần chính của Docker

    Docker được xây dựng từ nhiều thành phần khác nhau nhưng hai thành phần quan trọng nhất là:

    Docker Engine


    Docker Engine là "trái tim" của Docker. Nó chịu trách nhiệm:
    • Tạo Container
    • Khởi động Container
    • Dừng Container
    • Quản lý Image
    • Quản lý Network và Storage
    Docker Engine có thể chạy trên:
    • Linux
    • Windows
    • macOS
    Docker Client

    Docker Client là giao diện để người quản trị tương tác với Docker Engine. Thông thường chúng ta sử dụng các lệnh như:
    docker run
    docker pull
    docker images
    docker ps
    docker stop
    Docker Client sẽ gửi các yêu cầu này đến Docker Engine để thực hiện.

    Docker Desktop là gì?

    Đối với môi trường phát triển trên Windows 10 hoặc Windows 11, Microsoft và Docker cung cấp Docker Desktop. Docker Desktop được thiết kế để giúp các anh em Developer dễ dàng:
    • Xây dựng Container.
    • Chạy Container.
    • Kiểm thử ứng dụng.
    • Triển khai ứng dụng Containerized.
    Docker Desktop cung cấp một môi trường phát triển thân thiện hơn rất nhiều so với việc cài đặt Docker Engine thủ công.

    Các công cụ có trong Docker Desktop

    Docker Desktop không chỉ là Docker Engine. Nó còn tích hợp nhiều công cụ hỗ trợ phát triển hiện đại như:

    Docker Engine

    Runtime chính để chạy Container.

    Docker CLI

    Giao diện dòng lệnh để quản lý Docker.

    Docker Compose

    Cho phép triển khai nhiều Container cùng lúc bằng file YAML. File YAML là một dạng file giúp chúng ta mô tả các thông tin của một máy chủ, một hạ tầng IT....
    Ví dụ Web Server, Database, Redis Cache...
    có thể được khởi động chỉ bằng một lệnh duy nhất.

    Docker Dashboard

    Giao diện đồ họa giúp:
    • Xem Container
    • Xem Logs
    • Kiểm tra Resource Usage
    • Quản lý Image
    Kubernetes (tùy chọn)

    Docker Desktop có thể tích hợp Kubernetes để phục vụ việc học tập và thử nghiệm. Docker Extensions

    Cho phép mở rộng tính năng thông qua các plugin từ cộng đồng. Tại sao Docker Desktop không phải trọng tâm của Windows Server?

    Docker Desktop được thiết kế chủ yếu cho:
    • Windows 10
    • Windows 11
    • Máy tính của Developer
    Trong khi đó, môi trường sản xuất thường sử dụng:
    • Windows Server 2019
    • Windows Server 2022
    với Docker Engine hoặc Container Runtime chuyên dụng.
    Do đó khi học Windows Server Containers, Docker Desktop chỉ được xem như công cụ hỗ trợ phát triển chứ không phải thành phần chính trong môi trường Production. Cài đặt Docker trên Windows Server


    Trên Windows Server, Docker có thể được cài đặt bằng PowerShell.
    Cài đặt DockerMsftProvider:
    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
    Cài đặt Docker:
    Install-Package -Name docker -ProviderName DockerMsftProvider
    Sau khi cài đặt hoàn tất có thể cần khởi động lại máy chủ. Docker Hub là gì?


    Docker Hub là kho lưu trữ Container Image lớn nhất hiện nay.
    Nó hoạt động tương tự như GitHub nhưng dành cho Container Images. Docker Hub cho phép chúng ta làm các công việc như Lưu trữ Images, chia sẻ Images, tải Images về máy chủ và quản lý phiên bản Images. Hàng trăm nghìn Container Images hiện đang được lưu trữ trên Docker Hub.

    Container Base Image là gì?

    Container Base Image là lớp nền tảng đầu tiên của Container.
    Base Image cung cấp các thành phần hệ điều hành cần thiết, runtime Libraries, các API hỗ trợ cho các ứng dụng và các file hệ thống trong User Mode. Khi xây dựng Container, chúng ta thường bắt đầu từ một Base Image rồi bổ sung ứng dụng của mình lên trên. Ví dụ để tải Nano Server Image, các bạn hãy dùng lệnh:
    docker pull mcr.microsoft.com/windows/nanoserver:1903

    Các loại Windows Container Base Image

    Microsoft hiện cung cấp nhiều loại Base Image khác nhau.

    Windows Server Core

    Đây là Image phổ biến nhất trong môi trường doanh nghiệp.
    Đặc điểm:
    • Hỗ trợ phần lớn Windows APIs
    • Hỗ trợ các ứng dụng .NET Framework truyền thống
    • Kích thước nhỏ hơn Windows đầy đủ
    Thường dùng cho:
    • IIS
    • ASP.NET Framework
    • Ứng dụng Legacy
    Nano Server


    Nano Server là Base Image nhỏ nhất của Microsoft. Đặc điểm:
    • Kích thước rất nhỏ
    • Tối ưu cho Cloud
    • Hỗ trợ .NET Core và .NET hiện đại
    Phù hợp với Microservices, Cloud Native Applications, Kubernetes.

    Windows Image

    Đây là Base Image đầy đủ nhất. Bao gồm toàn bộ Windows API Set. Tương thích tối đa với các ứng dụng Windows. Bù lại, nó có kích thước lớn nhất và tiêu thụ tài nguyên của máy chủ nhiều hơn.

    Windows IoT Core

    Đây là loại image được thiết kế cho IoT Devices, ARM Platforms, Edge Computing. Thường được sử dụng trong các hệ thống nhúng hoặc thiết bị công nghiệp.

    Lưu ý cực kỳ quan trọng về phiên bản Base Image

    Một trong những lỗi phổ biến nhất khi làm việc với Windows Containers là sử dụng Base Image không khớp phiên bản với Host OS. Ví dụ Host chạy Windows Server 2019, Container sử dụng Base Image từ phiên bản Windows khác. Kết quả có thể là:
    • Container không khởi động được
    • Lỗi API
    • Hành vi không ổn định
    • Khó khăn trong việc Troubleshooting
    Nguyên nhân là do Windows Containers ở chế độ Process Isolation sử dụng chung Kernel với Host Operating System. Khác với VM, Container không có Kernel riêng. Vì vậy Microsoft khuyến nghị ba chi tiết sau để giúp chúng ta hạn chế lỗi trên:
    • Chọn Base Image cùng phiên bản với Host OS
    • Thường xuyên cập nhật cả Host và Container Images
    • Kiểm tra kỹ Compatibility Matrix trước khi triển khai Production
    Đây là một trong những khác biệt quan trọng nhất giữa Windows Containers và Linux Containers mà các quản trị viên hệ thống cần ghi nhớ.

    Một số lệnh Docker cơ bản

    Liệt kê các Image đã tải:
    docker images
    Tạo và chạy Container:
    docker run
    Lưu thay đổi thành Image mới:
    docker commit
    Dừng Container:
    docker stop
    Xóa Container:
    docker rm

    Tóm tắt bài Docker

    Docker đã trở thành nền tảng tiêu chuẩn cho việc triển khai Container trong các môi trường hiện đại. Trên Windows Server, Docker cho phép đóng gói và vận hành ứng dụng theo cách nhất quán, linh hoạt và dễ mở rộng hơn nhiều so với mô hình triển khai truyền thống. Khi làm việc với Windows Containers, việc lựa chọn đúng Container Base Image và đảm bảo phiên bản Image tương thích với Host OS là yếu tố đặc biệt quan trọng, bởi Host và Container cùng chia sẻ Kernel của hệ điều hành. Đây cũng là nền tảng để tiến tới các công nghệ cao hơn như Kubernetes, Microservices và Cloud-Native Applications.
    Cám ơn các bạn đã đọc.​
    Attached Files
    Last edited by dangquangminh; 6 hours ago.
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X