컨테이너화

이전 글에서 우리는 virtualization가 무엇인지, 그리고 개념과 기술이 전체 클라우드 컴퓨팅 모델에서의 중요성을 토론했다.
현재 나는 용기화 - 가상 기기 모니터링 프로그램을 사용하지 않고 프로세스와 시스템의 나머지 부분을 분리하는 특정한 내장 기능에 의존하는 다른 격리 방법을 이야기하고 싶다.
간단하게 말하면 용기화는 운영체제 가상화의 한 형식으로 우리는 용기라고 불리는 고립된 사용자 공간에서 응용 프로그램을 실행한다.
모든 프로세스 '용기' 나 '감옥' 에는 개인 루트 파일 시스템과 프로세스 이름 공간이 있습니다.하위 운영체제의 핵과 다른 서비스를 공유할 때 용기 밖의 파일이나 자원을 접근할 수 없습니다.본질적으로 용기는 완전히 포장된 휴대용 계산 환경이다.
출처: Unix And Linux System Administration Handbook
우리가 말했듯이 이런 유형의 가상화는hypervisor가 필요하지 않다. 하드웨어의 가상화가 필요하지 않기 때문에 이런 가상화의 자원 비용은 매우 낮다.
이것은 용기의 시동 시간이 매우 빠르거나, 시동을 걸고 싶으면 시간이 매우 짧다는 것을 의미한다.용기를 만드는 비용은 리눅스 프로세스를 만드는 비용과 맞먹는다. 이 비용은 약 밀리초이며, VM을 만드는 데 몇 초가 걸릴 수도 있다.
컨테이너 어플리케이션은 모든 환경을 재구성하지 않고도 베어 메탈, 가상 머신 및 클라우드의 다양한 인프라에서 실행 가능

그렇다면 용기와 가상 기기의 관계는 어떻습니까?


둘 다 이식 가능하고 격리된 실행 환경으로 보기에 완전한 운영체제와 같다.VM과 달리 VM에는 하나의 운영체제 내핵, 하드웨어와 상호작용하는 드라이버 등이 있다. 용기는 하나의 운영체제의 모조품일 뿐이다.컨테이너 자체는 호스트 운영체제에서 추상적으로 만들어진 것으로, 밑바닥 자원에 대한 접근이 제한되어 있다. 우리는 그것이 경량급 가상 기기라고 말할 수 있다.
VMs 아키텍처의 컨테이너는 공용 클라우드 인스턴스에서 실행되어야 하는 컨테이너 애플리케이션의 표준입니다.

컨테이너화는 실제로 어떻게 작동합니까?


우리는 컨테이너화는 특정한 내핵 특성에 의존한다고 말했는데, 이러한 특성은 무엇입니까?우리가 아는 용기화는 cgroups에서 발전된 것이다. cgroups는 리눅스 핵에서 자원을 분리하고 제어하는 기능이다. (예를 들어 주어진 프로세스가 얼마나 많은 CPU와 RAM, 그리고 몇 라인에 접근할 수 있는지).cgroups는 구글의 Paul Menage와 Rohit Seth가 최초로 개발한 것으로 이들의 첫 번째 기능은 Linux 2.6.24에 통합되었다.Cgroups는 Linux 컨테이너LXC가 되어 루트 테이블과 파일 시스템 같은 고급 구성 요소 이름 공간 격리 기능을 갖추고 있다.
명칭 공간은 하나의 프로세스가 시스템의 나머지 부분에 대한 가시성을 제한하는 내부 핵 메커니즘이다.예를 들어, 특정 프로세스 트리, 네트워크 인터페이스, 사용자 ID 또는 파일 시스템 마운트의 가시성을 제한할 수 있습니다.이름 공간은 처음에 Eric Biederman에서 개발되었고 최종 주요 이름 공간은 Linux 3.8에 통합되었다.
커널 버전 5.6 이후 8가지 명칭 공간이 있다.네임스페이스 기능은 모든 유형에서 동일합니다. 각 프로세스는 하나의 네임스페이스와 연관되어 있으며 해당 네임스페이스와 연관된 리소스, 해당 하위 네임스페이스만 보거나 사용할 수 있습니다.이렇게 하면 모든 프로세스(또는 프로세스 그룹)가 자원에 대해 독특한 보기를 가질 수 있다.
bojana@linux:~$ sudo lsns -p 270
        NS TYPE   NPROCS PID USER COMMAND
4026531835 cgroup    130   1 root /sbin/init
4026531836 pid       126   1 root /sbin/init
4026531837 user      130   1 root /sbin/init
4026531838 uts       123   1 root /sbin/init
4026531839 ipc       126   1 root /sbin/init
4026531840 mnt       114   1 root /sbin/init
4026531992 net       126   1 root /sbin/init
Linuxlsns에는 현재 액세스할 수 있는 모든 이름 공간에 대한 정보가 나열되어 있습니다.
  • cgroup
  • mnt(마운트 포인트, 파일 시스템)
  • pid(과정)
  • 네트워크(네트워크 스택)
  • 대시보드 콤보 대시보드(시스템 V 대시보드 콤보 대시보드)
  • uts(호스트 이름)
  • 사용자(UIDs)
  • 시간 명칭 공간
  • 현대 용기는 이 두 개의 내핵 특성에서 발전된 것으로 LXC는 2013년에 출시된Docker의 기초이다.초기에는 LXC 사용을 기반으로 했으나 나중에 자체 라이브러리를 개발했다.

    부두 노동자



    현재의 대다수 사람들에게 컨테이너 부두 노동자가 첫 번째 협회라고 말하지만, 우리는 컨테이너화 기술이 그렇게 새로운 것이 아니라는 것을 보았다. (cgroups는 2008년으로 거슬러 올라갈 수 있다.)그러나 Docker의 확장은 기존의 컨테이너화 기술을 활용하여 도입한 도구에 기여할 수 있다.
    docker 도구의 신속한 발전과 새로운 버전이 기존의 배치와 호환되지 않기 때문에 to Country this docker Inc.는 Open Container Initiative 연맹의 창시 구성원 중 하나가 되었다. 이 연맹의 사명은 컨테이너 기술을 건전한 경쟁 방향으로 발전시키고 표준과 협력을 추진하는 것이다.
    우리는 다음 글에서 도커 시스템 구조와 도커를 용기 엔진으로 논의할 것이다.
    게시물 최초 발표: bojana.dev

    좋은 웹페이지 즐겨찾기