
제
4
장
컨테이너 격리
76
보안을 위해서는
chroot
대신
pivot
_
root
를 사용하는 것이 몇 가지 면에서 더 낫다. 실제로 쓰이는
컨테이너 런타임 구현 소스 코드를 보면
pivot
_
root
를 더 자주 보게 될 것이다. 주된 차이점은,
pivot
_
root
는 마운트 이름공간의 장점을 취한다는 것이다.
pivot
_
root
의 경우 기존 루트는 더 이상 마운트되
지 않으므로, 그 마운트 이름공간 안에서 접근이 아예 불가능하다. 반면
chroot
시스템은 이 접근 방식을
사용하지 않아서, 마운트 지점들을 통해서 기존 루트에 접근이 가능하다.
이상으로 컨테이너 시스템들이 컨테이너에 개별적인 루트 파일 시스템을 부여하는 방법을
살펴보았다. 이 주제는 제
6
장에서 좀 더 이야기한다. 일단 지금은, 이처럼 개별적인 루트 디렉
터리를 가진 컨테이너가 특정 자원들만 볼 수 있도록 컨테이너에 이름공간을 적용하는 방법을
살펴보자.
4.5
이름공간과 루트 변경의 조합
앞에서는 이름공간과 루트 변경을 개별적인 기능으로 취급해서 설명했다. 그런데 그 둘을 조합
할 수도 있다. 다음처럼
chroot
자체를 새 이름공간에서 실행하면 된다.
me@myhost:~$ sudo unshare --pid --fork chroot alpine sh
/ $ ls
bin etc lib mnt proc ...