Aşağıda, ana bilgisayar dizinimden birini kaba bağlamak için ne yaptım. Bu göründüğünden daha zor çünkü başarmak istiyoruz
- Kabın içinde dizine yazabilmeliyiz.
- Kapsayıcı dışında, kap içinde oluşturulan dosyalara ve dizinlere yazabilmeliyiz.
Çeşitli makaleleri çevrimiçi okuduktan sonra (en faydalı olanı bu github sorunu ), bunu nasıl çözdüğüm . İşin püf noktası, ana kullanıcının uid ve gid'ini, kabın içindeki kullanıcının uid ve gidine eşlemektir.
Diyelim ki /home/breakds/projects
kapta tam olarak aynı yere monte edeceğim . Dış dizinin sahibi breakds
uid ve gid olan kullanıcıdır 1000
.
Daha sonra debian
uid ve gid de oldu 1000
(ilk kök olmayan kullanıcı olduğu için) adlı kapsayıcıda bir kullanıcı oluşturdum . Daha sonra ana bilgisayarda bir (lxc) profie oluşturacağım
lxc profile edit breakds
Ve aşağıda profil içeriği (yaml formatında olduğuna inanıyorum):
name: breakds
config:
raw.lxc: |
lxc.id_map =
lxc.id_map = u 0 165536 999
lxc.id_map = g 0 165536 999
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 166537 64535
lxc.id_map = g 1001 166537 64535
user.vendor-data: |
packages:
- bash
description: allow home dir mounting for breakds
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
projects:
path: /home/breakds/projects
source: /home/debian/projects
type: disk
Ardından, bu profili bu kapsayıcıya kalıcı olarak uygulayın:
$ lxc profile apply <my container> breakds
Bu hile yapmalı.
NOT : Bu profile geçmeden önce, sahibi / grubu debian olan tüm dizinlerin veya dosyaların silineceğini (ve muhtemelen anahtardan sonra yeniden oluşturulduğunu) unutmayın. Bunun nedeni, uid ve gid eşlemesinden sonra sahipliklerinin geçersiz hale gelmesidir. Başlangıçta sadece 1000 ila 1000 eşleme yaptığımdan beri her şeyin iyi olması gerektiğini düşündüm, ancak burada bir şeyleri kaçırdım ve bazıları hack olmadan bunu nasıl çözeceğine dair tavsiyelerde bulunabilseydim harika olurdu.