LXC: 호스트에서 컨테이너로 폴더를 마운트하는 방법은 무엇입니까?

LXC: 호스트에서 컨테이너로 폴더를 마운트하는 방법은 무엇입니까?

호스트 시스템의 폴더를 LXC 컨테이너에 마운트하려고 합니다.

호스트는 /mnt/ssd/solr_data폴더를 생성합니다(현재는 루트 파일 시스템에 있지만 나중에 거기에 SSD 드라이브를 마운트할 예정이라 준비 중입니다).

/data폴더가 컨테이너에 있는 것처럼 마운트되기를 원합니다.

따라서 컨테이너 fstab 파일에는 다음이 있습니다.

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        ext4    defaults,noatime        0       0

하지만 이 방법은 작동하지 않습니다. 컨테이너를 시작할 때 다음 오류가 발생합니다.

lxc-start: No such file or directory - failed to mount '/mnt/ssd/solr_data' on '/usr/lib/x86_64-linux-gnu/lxc//data'
lxc-start: failed to setup the mounts for 'Solr4StandAlone'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'Solr4StandAlone'

답변1

컨테이너에 디렉터리를 자동으로 생성하려면 create=dirfstab에 옵션을 추가할 수도 있습니다.

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind,create=dir

편집: 이것은 LXC에만 해당됩니다. 바라보다이 스레드

이미 "선택 사항"이 있었던 것처럼 여기에는 두 개의 새로운 LXC 관련 설치 플래그가 추가됩니다.

  • create=dir (mkdir_p는 해당 경로에서 실행됩니다)

  • create=file (디렉토리 이름에서 mkdir_p 실행 + 경로에서 fopen 실행)

이는 권한이 없는 컨테이너에 필요한 일부 바인드 마운트에 의해 구동됩니다.

답변2

/var/lib/lxc/Solr4StandAlone/config줄을 추가하세요 :

lxc.mount.entry = /mnt/ssd/solr_data  /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0

그런 다음 lxc-stop컨테이너와 lxc-start컨테이너를 다시 중지하십시오.

그게 전부입니다.

인용하다:참고 링크

답변3

2015년 9월 30일 현재 보안 패치로 인해 구성 파일의 lxc.mount.entry에 대한 절대 경로 마운트가 중단되는 변경 사항이 발생했습니다.

대신 상대 경로를 사용할 수 있습니다

 lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0

바라보다:https://wiki.debian.org/LXC#Bind_mounts_inside_the_container

답변4

LXC는 시간이 지남에 따라 변경되었기 때문에 이는 매우 간단할 수 있지만 약간 혼란스럽기 때문에 기여하고 싶었습니다. 나는 또한 나 자신을 기억할 수 있도록 이에 대한 요점을 만들었지만 lxc를 사용하여 장치를 구성하는 것만으로도 성공했습니다.

sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data

노트@biscuitNinja가 언급한 변경 사항으로 인해 경로 매개변수에 슬래시를 유지하는 것이 중요합니다.

컨테이너에서 호스트로 디렉토리 마운트

관련 정보