Bạn đã từng nghe nói Podman container hay Docker container chạy được là nhờ có chức năng namespaces trong Linux kernel đúng không?
Đúng vậy Podman container hay Docker container sử dụng Linux namespaces để tạo ra các container giả lập hệ điều hành hay ở dạng 1 môi trường hệ điều hành cô lập (isolated), riêng biệt giải quyết được vấn đề trước giờ xảy ra là bị xung đột phiên bản phần mềm, xung đột thư viện khi cùng chạy phần mềm nhiều phiên bản hay nhiều phần mềm trên cùng 1 hệ điều hành Linux.
Linux kernel mới nhất có 6 namespace là UTS, TIME, IPC, User, PID, Network.
Namespaces support
CONFIG_NAMESPACES:
Provides the way to make tasks work with different objects using
the same id. For example same IPC id may refer to different objects
or same user id or pid may refer to different tasks when used in
different namespaces.
Symbol: NAMESPACES [=y]
Type : bool
Defined at init/Kconfig:1201
Prompt: Namespaces support
Depends on: MULTIUSER [=y]
Visible if: MULTIUSER [=y] && EXPERT [=y]
Location:
-> General setup
-> Namespaces support (NAMESPACES [=y])
UTS namespace trong Linux kernel.
UTS namespace
CONFIG_UTS_NS:
In this namespace tasks see different info provided with the
uname() system call
Symbol: UTS_NS [=y]
Type : bool
Defined at init/Kconfig:1213
Prompt: UTS namespace
Depends on: NAMESPACES [=y]
Location:
-> General setup
-> Namespaces support (NAMESPACES [=y])
-> UTS namespace (UTS_NS [=y])
TIME namespace trong Linux kernel.
TIME namespace
CONFIG_TIME_NS:
In this namespace boottime and monotonic clocks can be set.
The time will keep going with the same pace.
Symbol: TIME_NS [=y]
Type : bool
Defined at init/Kconfig:1220
Prompt: TIME namespace
Depends on: NAMESPACES [=y] && GENERIC_VDSO_TIME_NS [=y]
Location:
-> General setup
-> Namespaces support (NAMESPACES [=y])
-> TIME namespace (TIME_NS [=y])
IPC namespace trong Linux kernel.
IPC namespace
CONFIG_IPC_NS:
In this namespace tasks work with IPC ids which correspond to
different IPC objects in different namespaces.
Symbol: IPC_NS [=y]
Type : bool
Defined at init/Kconfig:1228
Prompt: IPC namespace
Depends on: NAMESPACES [=y] && (SYSVIPC [=y] || POSIX_MQUEUE [=y])
Location:
-> General setup
-> Namespaces support (NAMESPACES [=y])
-> IPC namespace (IPC_NS [=y])