컨테이너
SW에서 컨테이너란 소프트웨어 서비스를 실행하기 위한 환경이 구축되어 있는 패키지 라고 할 수 있다. 컨테이너에 대해 자세히 알기 위해서는 리눅스 컨테이너에 대해 먼저 알 필요가 있다.
1979년 chroot라는 시스템으로 컨테이너가 처음으로 등장했다. chroot는 특정 디렉토리에 대해 애플리케이션의 접근을 제한해서 프로세스를 분리하는 기술이다. 즉, 프로세스의 루트 디렉토리를 변경시켜 접근 할 수 있는 디렉토리를 제한시킨다. chroot는 파일과 디렉토리에 대한 접근만 설정 가능했다.
한동안 발전이 없다가, 2000년 FreeBSD jail 이라는 이름으로 다시 등장했다. FreeBSD jail은 FreeBsd (오픈소스 OS) 를 여러 하위 시스템 ( Jail ) 로 분할 할 수 있도록 만드는 가상화 기술이다. 감옥이라는 뜻의 Jail 이라는 용어처럼 하나의 독립적인 작은 시스템을 의미한다. Jail 을 통해 사용자 별로 환경을 분리 할 수 있다. 특정 Jail에 허가된 사용자만 접근 가능해 보안이 좋아지고 관리하기 용이해진다. 임대서버나 호스팅 등에 사용되었다.
Jail 시스템은 Linux VServer로 개선되었으며, 계속해서 발전해나갔다.
Linux Containers
리눅스 컨테이너는 VServer Project 라는 이름으로 처음 등장했고, 시간에 따라 발전해 나가면서 2008년에 IBM에서 Linux Containers ( 이하 ‘LXC’ ) 가 발표되었다. LXC는 chroot, namespaces, cgroups 등을 사용해서 리눅스 상에서 프로세스를 시스템과 격리한다.
LXC는 OS수준의 가상화 기술이며 격리된 애플리케이션 프로세스들은 하나의 리눅스 커널을 공유한다. 이 프로세스를 실행하기 위한 모든 파일은 고유한 이미지에서 제공된다. 그래서 환경에 상관없이 일관성을 유지한다.
여기서 이미지(Image)란, 서비스 실행에 필요한 소스코드, 라이브러리 등을 묶어놓은 형태를 의미한다. LXC의 이미지는 주로 Ubuntu, Debian, Alpine 같은 리눅스 배포판을 복제해 놓는다.
'Development > Docker' 카테고리의 다른 글
Docker 컨테이너 접속 후, JDK 설치하기 (0) | 2024.02.02 |
---|