LXC

created : 2022-07-01T18:27:34+00:00
modified : 2022-07-01T19:49:19+00:00

devops

LXC 란

  • 원문
  • 2008년부터 개발 시작
  • 분리된 커널을 돌리고 모든 하드웨어를 시뮬레이팅하는 것을 오버헤드 없이 하는 것을 목표로 함.
  • Unprivileged containers 는 어떠한 권한 없이 돌아가는 컨테이너를 의미.:
    • UID와 GID를 격리
    • 이를 위해서 서로 다른 범위를 사용. host의 100000번 이후를 0으로 내부적으로 매핑
    • 이러한 것들은 몇가지 제약을 가져왔고 아래 3가지 setuid code를 이용해 이를 극복:
      • lxc-user-nic
      • newuidmap
      • newgidmap
  • 일반적으로 LXC의 목표는 커널상의 모든 보안 기능을 사용 가능하게 하는데에 있음. 이를 통해서 LXC는 그들의 요구에 따라 복잡하게 튜닝할수 있게 함.
  • LXC는 모든 권한 없이도 잘 돌아가지만 일반적으로 몇가지 유용한 것들은 꽤나 제한적임. 대표적인 2가지 문제는 Network와 Usernamespaces 임.:
    • Network : host의 network namespace는 격리 수준을 낮추고 attack vector를 증가시킴. host와 container가 똑같은 network namespace를 사용한다는 것은 sysfs mount가 거부될수 있음을 의미함.
    • user namespaces는 보안 증가에는 효율적이지만 privileged helper에 의하지 않고 unprivileged 유저가 container에 그들의 uid를 매핑하는 게 허락되있음. POSIX 시스템에서는 65536 UIDs와 GIDs 로도 모든 기능을 사용 가능한게 보장되어 있음.

lxc가 namespace와 cgroup 을 어떻게 사용하는가:


Docker는 LXC를 사용하는가?