Tìm hiểu những thứ bên trong Docker
Docker sử dụng các chức năng của Linux kernel cho tính năng của nó.
NAMESPACES
Docker sử dụng kernel namespaces để cung cấp một môi trường độc lập được gọi là container. Khi bạn chạy một container, Docker tạo ra một tập các namespaces cho container này. Những namespaces này cung cấp một layer cho việc ngăn cách, tạo ra sự độc lập cho container. Mỗi phần của một container chạy trong một namespace riêng biệt và khả năng truy cập được giới hạn trong namespace đó.
Docker Engine sử dụng những namespace sau trong Linux:
Docker cũng sử dụng kernel control group để phân bổ và cô lập resource. Một cgroup giới hạn một ứng dụng cho một tập resource nhất định. Control groups cho phép Docker Engine chia sẻ những tài nguyên phần cứng cho các containers và cũng có thể đảm bảo giới hạn những tài nguyên này hay thiết lập các constraints.
Docker Engine sử dụng những cgroups sau:
Docker Engine sử dụng AppArmor, Seccomp, Capabilities của kernel cho mục đích bảo mật.
NAMESPACES
Docker sử dụng kernel namespaces để cung cấp một môi trường độc lập được gọi là container. Khi bạn chạy một container, Docker tạo ra một tập các namespaces cho container này. Những namespaces này cung cấp một layer cho việc ngăn cách, tạo ra sự độc lập cho container. Mỗi phần của một container chạy trong một namespace riêng biệt và khả năng truy cập được giới hạn trong namespace đó.Docker Engine sử dụng những namespace sau trong Linux:
- PID namespace cho việc cô lập process
- NET namespace cho việc quản lý network interfaces
- IPC namespace cho việc quản lý access đến IPC resources (Inter Process Communication)
- MNT namespace cho việc quản lý filesystem mount points.
- UTS namespace cho việc cô lập kernel và version identifiers.
CGROUPS
Docker cũng sử dụng kernel control group để phân bổ và cô lập resource. Một cgroup giới hạn một ứng dụng cho một tập resource nhất định. Control groups cho phép Docker Engine chia sẻ những tài nguyên phần cứng cho các containers và cũng có thể đảm bảo giới hạn những tài nguyên này hay thiết lập các constraints.
Docker Engine sử dụng những cgroups sau:
- Memory cgroup cho việc quản lý bộ nhớ
- HugeTBL cgroup để quản lý việc sử dụng hugepages bởi process group.
- CPU group để quản lý user/system CPU time và usage
- CPUSet cgroup để đo đạc và giới hạn lượng blckIO bởi group
- net_cls và net_prio cgroup để gắn thẻ traffic control
- Devices cgroup để đọc và ghi các access devices
- Freezer cgroup để đóng băng 1 group.
UNION FILE SYSTEMS
Union file systems vận hành dựa trên việc tạo các layers, làm cho chúng trở nên nhẹ và nhanh. Docker Engine sử dụng UnionFS để cung cấp việc building blocks cho containers. Docker Engine có thể sử dụng nhiều biến thể của UnionFS như AUFS, btrfs, vfs và devicemapper.CONTAINER FORMAT
Docker Engine kết hợp namespaces, control group và UnionFS trong một wrapper gọi là container format. Container format mặc định là libcontainer.SECURITY
Docker Engine sử dụng AppArmor, Seccomp, Capabilities của kernel cho mục đích bảo mật.
- AppArmor cho phép giới hạn khả năng của các chương trình với per-program profiles.
- Seccomp sử dụng để lọc các system call mà được thực hiện bởi một chương trình
- Capabilities để thực hiện permission checks.
Nhận xét
Đăng nhận xét