NET namespace 이전에 리눅스 컨테이너 (4)편에서는 프로세스 격리 기능 중 하나인 UTS namespace에 대해 살펴보았습니다. 리눅스 컨테이너에서 사용하는 여러 종류의 namespace 중 NET namespace는 컨테이너가 고유한 네트워크 인터페이스, IP 주소, 라우팅 테이블, 포트 등 네트워크 스택 전반을 독립적으로 소유하도록 하여, 네트워크 자원 측면에서의 완전한 격리를 제공합니다. 이를 통해 하나의 물리 서버에서 여러 컨테이너가 각각 자신만의 가상 네트워크 환경을 구성하고, 다른 컨테이너나 호스트와 충돌 없이 통신하거나 완전히 차단된 상태로 동작할 수 있습니다. Network Interface 네트워크 인터페이스(Network Interface)는 컴퓨터 시스템이 외부 네트워크와..
UTS namespace 이전에 리눅스 컨테이너 (3)편에서는 프로세스 격리 기능 중 하나인 PID namespace에 대해 살펴보았습니다. 리눅스 컨테이너에서 사용하는 여러 종류의 namespace 중 UTS namespace는 컨테이너가 고유한 hostname과 domain name을 갖도록 하여, 네트워크 식별자 측면에서의 독립성을 제공합니다. 이를 통해 하나의 물리 서버에서 여러 컨테이너가 서로 다른 호스트 이름을 사용하며 서로 간섭 없이 동작할 수 있습니다. hostname hostname은 리눅스 시스템에서 네트워크 상의 시스템을 식별하기 위한 이름입니다. 보통 사람이 읽기 쉬운 형식으로 지정되며, 시스템 관리자나 자동화 도구가 각 시스템을 구분할 때 주로 사용됩니다. 예를 들어 web-ser..
PID namespace 이전에 리눅스 컨테이너 (2)편에서는 프로세스 격리 기능 중 하나인 chroot에 대해 살펴보았습니다. 이번 글에서는 리눅스 컨테이너 기술의 핵심 개념 중 하나인 namespace 중에서 PID namespace에 대해 알아보겠습니다. 컨테이너와 커널 PID namespace에 대해 보기 전에, 먼저 리눅스 컨테이너 (1)편의 서론에서 언급했던 내용을 다시 살펴보겠습니다.컨테이너는 호스트 커널을 공유하면서도 사용자 공간은 독립적으로 분리된 실행 환경을 제공합니다. 이 개념을 실제로 확인하기 위해, 컨테이너 기술의 대표적인 도구인 docker를 사용해 실습해보겠습니다. 실습 환경은 (2)편과 동일하게 Multipass를 사용했습니다. 우선 docker가 설치되어 있는지 확인해보겠습..
chroot 이전에 리눅스 컨테이너 (1)편에서는 여러가지 프로세스 격리 기능들에 대해 간단히 살펴보았습니다. 이번 글에서는 격리 기능들 중 chroot의 동작 원리를 들여다보고, 실제로 어떻게 사용하는지 실습을 통해 알아보겠습니다. chroot를 실습하려면 리눅스 환경이 필요한데, 저는 이를 위해 Multipass를 사용했습니다. Multipass는 Ubuntu를 개발한 Canonical에서 제공하는 경량 가상 머신 관리자로, 로컬 환경에서 빠르고 간편하게 Ubuntu 인스턴스를 실행할 수 있도록 도와주는 도구입니다. 개발 및 테스트용 리눅스 환경을 구축할 때 매우 유용합니다. 동작 원리 chroot는 Change Root Directory 의 줄임말로 루트 디렉터리를 바꾼다는 뜻을 갖고 있습니다. 먼..
내장 함수 파이썬 내장 함수는 파이썬 모듈과 달리 import가 필요하지 않기 때문에 아무런 설정 없이 바로 사용가능합니다. 활용 빈도가 높은 내장 함수들을 살펴보겠습니다. abs 숫자의 절댓값을 리턴합니다.>>> abs(3)3>>> abs(-3)3>>> abs(-1.2)1.2 all 반복 가능한 데이터의 모든 요소가 참이면 True, 하나라도 거짓이면 False를 리턴합니다. (빈 값인 경우에는 True를 리턴합니다.)>>> all([1, 2, 3])True>>> all([1, 2, 3, 0])False>>> all([])True any 반복 가능한 데이터의 요소 중 참이 있으면 True, 모두 거짓이면 False를 리턴합니다. (빈 값인 경우에는 False를 리턴합니다.)>>> any([1, 2, 3..