LXC: 호스트에 의해 노출된 파일은 rootfs 디렉터리에서 000 권한을 갖습니다.

LXC: 호스트에 의해 노출된 파일은 rootfs 디렉터리에서 000 권한을 갖습니다.

/var/lib/lxc/container1/config내 컨테이너가 호스트의 파일을 볼 수 있도록 다음이 있습니다 .

lxc.mount.entry = /etc/someconf.conf etc/someconf.conf none bind,create=file 0 0

컨테이너에서 볼 수 있고 644거기에 권한이 있지만 이것이 호스트 시스템에서 보는 것입니다.

root@node01:~# ls -l /var/lib/lxc/container1/rootfs/etc/someconf.conf 
---------- 1 root root 0 Jul  16 11:29 /var/lib/lxc/container1/rootfs/etc/someconf.conf

왜 이런 일이 발생하는지, 해결 방법 또는 더 나은 방법이 있는지 알고 계십니까?

답변1

요청 시 처음으로 기본 파일이 생성되고( create=file) 존재하지 않으므로 해당 파일에 바인드 마운트가 적용되는 것을 볼 수 있습니다.

/etc/someconf.conf컨테이너 네임스페이스에는 호스트가 설치한 실제 파일이 이 빈 파일을 덮어쓰므 로 이 빈 파일이 표시되지 않습니다 . 예, 디렉터리에 디렉터리를 바인드 마운트할 수 있습니다.또는파일 속의 파일.

컨테이너에 표시되지만 호스트에도 표시되는 파일 시스템의 실제 보기를 얻으려면 /proc/[pid]/root/PID [pid]가 있는 프로세스가 보는 내용(호스트에 표시되는 내용)에 대한 보기를 제공하는 바로가기를 사용할 수 있습니다. , 즉, 컨테이너의 마운트 네임스페이스에 있습니다.

이러한 PID를 프로그래밍 방식으로 얻는 데 사용할 수 있습니다 lxc-info(컨테이너의 초기 PID는 컨테이너 내에서 PID 1로 간주됩니다). 실행 중인 컨테이너의 경우 foo다음 명령은 호스트에 표시되는 PID만 출력합니다.

lxc-info -H -p -n foo

따라서 컨테이너 관점에서 파일을 보지만 여전히 호스트 관점에서도 보려면 전체 명령은 다음과 같습니다.

ls -l /proc/$(lxc-info -H -p -n foo)/root/etc/someconf.conf

동일한 방법을 사용하여 호스트와 컨테이너의 "보이지 않는" 파일 시스템 간에 파일을 쉽게 이동할 수 있습니다.임시 파일 시스템/tmp컨테이너 내부에 설치됩니다 .

관련 정보