Namespaces

이정훈·2024년 8월 2일

Docker

목록 보기
6/34

Namespaces란?

Namespaces는 Docker에서 컨테이너들 간에 독립성을 제공하기 위해 사용되는 기술입니다.

Namespaces의 유형

PID (Process IDs)

프로세스 ID를 독립시킵니다.
이는 컨테이너 안에 있는 프로세스들은 오직 그들의 프로세스들만 알 수 있고 호스트나 다른 컨테이너에 있는 프로레스들에 대해서는 알지 못합니다.

Network (NET)

각각의 컨테이너를 네트워크 스택의 분리된 뷰를 제공합니다.
이로써 각 컨테이너는 자신만의 네트워크 인터페이스, 라우티 테이블, 방화벽을 가지게 됩니다.

Mount (MNT)

각각의 컨테이너가 그들만의 루트 파일 시스템을 가지게 하고 각 컨테이너는 컨테이너 내에 마운트 된 리소스만 나타나게 만들어 파일 시스템의 마운트 포인트를 격리합니다.

UTS (UNIX Time Sharing System)

각각의 컨테이너가 그들만의 호스트이름과 도메인 이름을 가지게 만들어 서로 독립시킵니다.

User (USER)

컨테이너간에 유저와 그룹 식별자를 따로 맵핑합니다. 이를 통해 컨테이너간에 서로 다른 접근 설정이 가능합니다.

IPC (inter-Process Communication)

서로 다른 컨테이너에 있는 프로세스들 간에 통신을 제한한거나 허용합니다.

Docker는 Namespaces를 어떻게 사용하는가?

Docker는 컨테이너를 실행하면 컨테이너에 독립적인 namespaces를 부여합니다.
이 namespaces들은 해당 컨테이너 안에서만 유효합니다.
그렇기 때문에 해당 컨테이너 안의 프로세스들은 다른 컨테이너와는 독립된 시스템 리소스를 갖고 여기에만 접근할 수 있습니다.

이렇게 함으로써 Docker는 컨테이너가 이식가능하고 어디에서나 작동 할 수 있게 만들었습니다.

profile
기록으로 흔적을 남깁니다.

0개의 댓글