Container, LXC, Docker

컨테이너

LXC (LinuX Containers)

단일 컨트롤 호스트 상에서 여러개의 고립된 리눅스 시스템들을 실행하기 위한 운영 시스템 레벨 가상화 방법

VM vs LXC

  • VM
    • 물리적인 하드웨어를 에뮬레이션 함
    • 커널이 포함되어 있고, 호스트 운영체제와 완벽하게 격리되어있음
  • LXC
    • VM 만큼의 강력한 보안 경계를 제공하지는 않음
    • 운영체제의 커널을 공유 (커널 네임스페이스, selinux 프로파일 등)

Docker

Go 언어로 개발중인, 컨테이너 기반의 오픈소스 가상화 플랫폼

  • 위에서 언급한, LXC를 기반으로 구현되었었음
  • 현재는 runc라는 기술을 기반으로 작동함

    Docker Image

    백엔드 서버 프로그램을 서버 10대에 셋팅해야 하고 유지보수를 해야 할 때, 어떤 방법이 좋을까?

  • 설치 방법을 적은 매뉴얼을 배포하여, 매번 직원이 명령어들을 따라치게 한다.

  • 설치 스크립트를 배포한다.
  • 도커 이미지를 사용한다.

1번의 경우부터 볼까? 사람이 설치 과정중 실수가 개입 될 경우가 생기며, 이는 불안정한 서비스를 야기 할 수 있다.
그리고 2의 경우를 보자. 1번에 비해서는 자동화가 되어있기 때문에 사람의 실수가 개입될 여지가 적기에 1번보다는 나으나, 만약 운영체제나 기타 프로그램의 환경이 변경된다면, 해당 서비스의 구축이 불완전하게 완료 될 수 있다.

그래서 보통 도커 이미지를 사용한다. 이를 위해 Dockerfile 이라는것을 작성하곤 한다. 기반이 될 시스템의 정보와, 2번에서 적었던것과 비슷한 내용들로 채워넣곤 한다.

Comments

Popular Posts