Skip to content

Understanding Docker: The Core Architecture Behind Containers

Published: at 04:10 PM

Ở bài viết này, chúng ta sẽ tìm hiểu sâu hơn về kiến trúc đằng sau Container - công nghệ cốt lõi của Docker và các công cụ Container hóa khác.

Việc hiểu rõ kiến trúc cốt lõi của Container sẽ giúp bạn:

Table of contents

Open Table of contents

Kiến trúc cốt lõi của Container

Shared Kernel Architecture (Kiến Trúc Chia Sẻ Của Kernel)

Shared Kernel
Sơ đồ kiến trúc Docker thể hiện việc Kernel dùng chung và dùng riêng Resource

Điểm khác biệt chính giữa ContainerMáy Ảo (VM) là nằm ở cách chúng sử dụng Resource của hệ thống:

  1. Máy ảo (VM):
  1. Container:

Lợi ích của việc chia sẻ Kernel:

Resource Isolation (Cách Ly Tài Nguyên)

Mặc dù chia sẻ Kernel, các Container vẫn được cách ly hoàn toàn riêng biệt với nhau:

Container Runtime Architecture (Kiến Trúc Container Runtime)

Container dựa vào môi trường Runtime để quản lý vòng đời và thực thi Application. Kiến trúc Runtime gồm hai thành phần chính:

Cách Docker triển khai Kiến Trúc Container

Shared Kernel
Docker Architecture

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

Kiến trúc phân tầng (Layers) của Docker Image:

Docker sử dụng cách tiếp cận phân các layers riêng biệt cho Container Image:

  1. Base Image Layer (Tầng cơ sở - Readonly): Tầng nền tảng, thường là OS hoặc Runtime cơ sở nhất
  2. Application Layer (Tầng ứng dụng - Readonly): Chứa code Application và các Library cần thiết
  3. Configuration Layer (Tầng Config - Readonly): Chứa các tệp Configuration
  4. Container Layer (Tầng Container - ReadWrite): Tầng trên cùng, nơi lưu trữ các thay đổi trong quá trình chạy

Networking Architecture (Kiến Trúc Mạng)

Ở đây chúng ta chỉ nói về một số các mode cơ bản của Networking trong Container, ta sẽ có một bài khác để nói chi tiết về chủ đề này

Docker cung cấp nhiều Network Mode:

Container Resource Architecture (Kiến Trúc Resource Container)

Container có được sự Isolation về mặt tiến trình và quản lý Resource dựa trên hai khái niệm chính:

Storage Architecture (Kiến Trúc Storage)

Containers sử dụng nhiều giải pháp lưu trữ khác nhau để quản lý dữ liệu:

Security Architecture (Kiến Trúc Bảo Mật)

Bảo mật luôn là một mối quan tâm được ưu tiên hàng đầu. Đối với việc Container hoá cũng vậy, Docker triển khai nhiều lớp bảo mật để đảm bảo rằng các ContainerResource luôn được bảo vệ ở trong nó:

Ví dụ:

# Dockerfile
FROM ubuntu:20.04         # Base layer
RUN apt-get update        # System layer
COPY ./app /app           # Application layer
WORKDIR /app              # Configuration
EXPOSE 8080               # Network configuration
CMD ["./start.sh"]        # Runtime instruction

Benefits of Container Architecture (Lợi Ích Của Kiến Trúc Container)

  1. Hiệu quả: Container chia sẻ Kernel Host, giảm Overhead và cải thiện hiệu năng hoạt động.
  2. Cách ly: Đảm bảo mỗi Application chạy trong các môi trường độc lập, cải thiện tính Security và sự ổn định.
  3. Nhất quán: Cung cấp môi trường nhất quán qua các giai đoạn phát triển, UAT, DEVPROD.

Conclusion (Kết Luận)

Kiến trúc Container đang thay đổi cách ta xây dựng và triển khai phần mềm. Bằng cách nắm vững cách hoạt động của Container và hiểu rõ cách triển khai của Docker, bạn có thể khai thác tiềm năng tạo ra các ứng dụng có khả năng Scalability, EffectivenessSecurity.

Kiến trúc Shared Kernel, Resource IsolationContainerized Application chỉ là khởi đầu cho những gì đã làm cho Container trở thành công cụ cần thiết và không thể thiếu cho việc xây dựng và phát triển các hệ thống ngày nay.

Tham khảo tại bài viết này. Cảm ơn vì đã đọc.