우분투 14.04에서 LXC / LXD를 실험 해왔으며 모두 훌륭하게 작동합니다. Virtualbox를 한 번에 모두 버릴 수 있도록 호스트 컴퓨터와 컨테이너 사이에서 공유 디렉토리를 작동시키는 방법을 알아야합니다.
이 페이지를 보았습니다 : https://wiki.gentoo.org/wiki/LXD
어느 지시 사항을 제공하지만 오류가 계속 발생합니다.
누구 든지이 작업을 수행하기위한 간단하고 명확한 지침을 알고 있습니까? 도움을 주시면 감사하겠습니다.
답변
언급 한 https://wiki.gentoo.org/wiki/LXD 의 지침 은 정확하지만 약간 더 자세한 설명이 필요할 수 있습니다.
호스트에서 먼저 컨테이너 데이터가 저장된 디렉토리의 소유권을 확인하십시오. 운영
sudo ls -l /var/lib/lxd/containers
디렉토리를 공유하려는 컨테이너의 소유자를 확인하십시오. 내 경우에서 uid
와 gid
모두 100,000이었다.
다음을 사용하여 공유하려는 디렉토리의 소유권을 변경하십시오.
sudo chown 100000:100000 /tmp/share_on_host
주석에 표시된 방식으로 컨테이너와 디렉토리를 공유하십시오.
lxc config device add mycontainer sharedtmp disk \
path=/tmp/share_on_guest source=/tmp/share_on_host
이제 컨테이너에서 디렉토리가 /tmp/share_on_guest
( /tmp
다른 것들을 위해 시스템에서 사용하고 특별한 권한을 가지고 있기 때문에 디렉토리를 마운트하지 않는 것이 좋습니다) 루트가 소유하고 있음을 알 수 있습니다. 여기에서 chown
컨테이너에서 사용하여 소유권을 컨테이너의 적절한 사용자 uid
및 gid
사용자 로 변경할 수 있습니다 .
참고로 컨테이너의 소유권을 예를 들어 uid
33 명의 사용자로 변경 한 후에 는 호스트에 uid
100033이 있음을 알 수 있습니다.
답변
이 질문에 대한 업데이트 된 답변입니다.
컨테이너 /var/www
와 같이 호스트 폴더 를 마운트하십시오 /var/test
.
lxc config device add mycontainer vartest disk source=/var/www path=/var/test
답변
컨테이너에 추가 장치 를 할당 할 수 있으며 이러한 장치는 호스트 액세스 가능 폴더 일 수 있습니다.
$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
Add a device to a container.
...
참고 <device>
다음 장치 관리를위한 ID로 사용됩니다 당신이 할당하는 것이 단지 임의의 이름입니다.
예를 들어, 컨테이너에 호스트 폴더 “./host”를 “/ mnt / host”로 마운트하려면 …
lxc config device add mycontainer vartest disk source=$(pwd)/host path=/mnt/host
한 가지 문제가 남아있다 -이 폴더는 호스트와 용기 모두 쓰기 권한을하려는 경우, 소유권과 권한이 적절하게 구성해야합니다. 이는 사용자 및 그룹 id
값 의 숫자 범위를 가상화하는 LXD의 기본 모드로 인해 복잡 합니다. 그러나 쉬운 해결책 이 있습니다. 호스트와 동등한 권한으로 실행되도록 컨테이너를 구성 하여이 가상화를 우회하십시오 …
lxc config set <container> security.privileged true
이 접근 방식의 전체 호스트 보안 영향은 현재 명확하지 않지만 가상화에 의해 다소 “포함 된”것 같습니다. 실제 위험은 컨테이너를 어떻게 어떻게 사용할 지에 달려 있습니다. 기술 노트 참조https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers 참조
또한이 접근 방식은 일반적으로 컨테이너에서 루트가 아닌 사용자로 컨테이너에서 작업하는 경우 가장 효과적입니다.
lxc exec zesty -- su --login ubuntu
- 구성에 대한 추가 참고 사항 : https://help.ubuntu.com/lts/serverguide/lxd.html
답변
ph0t0nix 의 탁월한 답변을 바탕으로 Ubuntu 18.04 서버에 대해 다음과 같은 단계별 접근 방식을 제안합니다.
-
호스트에서 rootfs 소유자의 UID를 결정하십시오.
sudo ls -l /var/lib/lxd/storage-pools/lxd/containers/webserver/rootfs id -u root → 100000
-
컨테이너에서 우분투의 UID를 결정하십시오 (즉 컨테이너의 사용자).
id -u ubuntu → 1000
-
호스트에서 공유 폴더를 작성하고 컨테이너에 추가하십시오.
lxc config device add webserver mydevicename disk path=/home/share_on_guest source=/home/share_on_host
-
공유 폴더의 호스트 UID에서 조정합니다 (UID = UID 호스트 + UID 게스트).
sudo chown 101000:101000 /home/share_on_host
-
게스트 (사용자 우분투)는 이제 공유 폴더에 액세스 할 수 있으며 컨테이너 액세스 내에서을 사용하여 공유 폴더에 대한 액세스를 조정할 수 있습니다
chmod
.
답변
이제 컨테이너와 호스트에서 UID와 GID 간의 매핑을 처리하기 위해 LXD 프로필을 사용하여이 문제에 대한 안전하고 효과적인 솔루션을 얻었습니다.
매우 유용한 요지가 여기에 있습니다.
https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8