당신은 도커를 이용하여 서버를 운영하고 있다. 당분간 일이 생겨서 외부인에게 도커 실행 권한을 가진 계정을 맡겼다. 그러면 당신은 그 사람에게 루트 계정을 준 것과 다름 없다.
리눅스에서 컨테이너가 어떤 원리로 만들어지는 이해한다면 이 문제를 사전에 방지할 수 있다. 이 글이 문제 예방에 도움이 되기를 바란다.
도커로 관리할 수 있는 리눅스 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다.
이 글은 아래 링크의 "김삼영님의 이게 돼요? 도커 없이 컨테이너 만들기"를 실습해보며 학습한 내용을 내 나름대로 재구성하여 작성하였다.
이게 돼요? 도커 없이 컨테이너 만들기 / if(kakao)2022
리눅스에서 간단한 컨테이너를 직접 만들기 위해 Cgroups, Namespace, 컨테이너 파일시스템을 실제 사용하고 설정해야한다. 그러면서 자원 할당, 격리, 파일시스템 구성 방법에 대해 알 수 있고 실제 리눅스 컨테이너의 동작 원리에 대해서도 이해할 수 있을 것이다.
이 글의 최종 목표는 2개의 리눅스 컨테이너를 만들어 통신시키고 여러 테스트를 통해 컨테이너의 완성을 확인하는 것이다. 자원이 잘 할당되었는지, 컨테이너의 각 요소들이 잘 격리되었는지 등을 직접 확인할 것이다.
컨테이너를 만들기 전에 위에서 말한 Cgroups, Namespace, 컨테이너 파일시스템에 대한 지식이 필요하므로 해당 지식들 부터 알아보자.
Cgroups는 Control groups라는 의미로 리눅스에서 프로세스의 자원 할당량을 제어하는 도구다. 참고: https://kubernetes.io/docs/concepts/architecture/cgroups/