Linux namespaces
네임 스페이스는 커널 리소스를 분할하여 하나의 프로세스 집합이 하나의 리소스 집합을보고 다른 프로세스 집합이 다른 리소스 집합을 볼 수 있도록 Linux 커널의 기능입니다.
About
namespace 는 하나의 system에서 수행되지만, 각각 별개의 독립된 공간인것 처럼 격리된 환경을 제공하는 lightweight 가상화 기술이다.
Features
현재, 리눅스에서 지원하는 이름공간은 다음과 같다:
- Cgroup Namespace (cgorup)
- IPC Namespace (ipc) - 프로세스간 통신 격리
- Unix Domain Socket (UDS)와 같은 것
- Network interface, iptables 등 network 리소스와 관련된 정보를 분할
UTS
UTS (UNIX Time-Sharing) namespaces 를 사용하면 단일 시스템이 서로 다른 프로세스에 대해 서로 다른 호스트 및 도메인 이름을 갖는 것처럼 보일 수 있습니다. "프로세스가 새 UTS 네임스페이스를 생성하면 ... 새 UTS 네임스페이스의 호스트 이름과 도메인이 호출자의 UTS 네임스페이스에 있는 해당 값에서 복사됩니다."
Linux Namespaces, cgroups, chroot 로 나만의 Docker 만들기
- Build Your Own Docker with Linux Namespaces, cgroups, and chroot: Hands-on Guide | Akash Rajpurohit
- GN⁺: 리눅스 네임스페이스, cgroups, 및 chroot를 사용하여 자체 Docker를 구축하세요. | GeekNews
Docker는 리눅스 네임스페이스, cgroups 및 chroot를 사용하여 격리, 자원 관리 및 보안을 위한 선도적인 컨테이너화 플랫폼입니다.
- 이 안내서는 도커 뒤에 있는 핵심 기술을 실제로 체험해 볼 수 있는 기회를 제공합니다.
- 이 안내서는 기본 컨테이너 환경을 처음부터 구축하는 단계를 안내합니다.
방법:
- unshare 명령을 사용하여 새로운 네임스페이스 설정하기.
- 자원 할당을 관리하고 사용량을 제어하기 위해 cgroups 구성하기.
- debootstrap을 사용하여 루트 파일 시스템 구축하기.
- 필수 파일 시스템을 마운트하고 chroot를 사용하여 루트 디렉토리 변경하기.
- Nginx 웹 서버를 사용하여 컨테이너 내에서 애플리케이션 설치 및 실행하기.
이 안내서를 따라가면 소프트웨어 엔지니어들은 리눅스 네임스페이스, cgroups 및 chroot를 사용하여 도커와 유사한 환경이 어떻게 구축되는지에 대한 실용적인 이해를 얻을 수 있습니다.
도커는 더 많은 기능과 기능성을 제공하지만, 이러한 핵심 기술을 이해하는 것은 애플리케이션을 위한 격리되고 효율적인 환경을 만드는 데 중요합니다.
See also
- Linux
- Docker:Network
- veth - 리눅스 가상 이더넷 인터페이스
Favorite site
Tutorials
- Linux namespace
- Linux namespace - UTS
- Linux namespace - IPC
- Linux namespace - PID
- Linux namespace - NS (File System)
- Linux namespace - NET
References
-
44bits_-_container-network-1-uts-namespace.pdf ↩