Saya telah bereksperimen dengan LXC / LXD di Ubuntu 14.04 dan semuanya bekerja dengan baik. Saya hanya perlu mencari cara untuk mendapatkan direktori bersama yang bekerja antara mesin host saya dan sebuah wadah sehingga saya bisa membuang Virtualbox sekali dan untuk semua.
Saya telah melihat halaman ini: https://wiki.gentoo.org/wiki/LXD
Yang memberikan instruksi, tapi saya tetap mendapatkan kesalahan.
Adakah yang tahu tentang instruksi sederhana dan jelas agar ini berfungsi? Setiap bantuan sangat dihargai.
lxc config device add confexample sharedtmp disk path=/tmp source=/tmp/shared
. Tetapi melihat direktori pada wadah pemilik dan grup untuk file-file di sana diatur ke 'tidak ada' dan 'nogroup' dan mount hanya dibaca.lxc file
untuk mentransfer file antara host dan wadah, menggunakanpush
danpull
.Jawaban:
Petunjuk di https://wiki.gentoo.org/wiki/LXD yang Anda sebutkan benar tetapi mungkin perlu sedikit penjelasan lebih lanjut.
Pada host Anda pertama kali memeriksa kepemilikan direktori di mana data kontainer disimpan. Lari
dan periksa pemilik wadah yang ingin Anda bagikan direktori. Dalam kasus saya
uid
dangid
keduanya adalah 100.000.Selanjutnya, gunakan ini untuk mengubah kepemilikan direktori yang ingin Anda bagikan:
Bagikan direktori dengan wadah seperti yang Anda tunjukkan dalam komentar Anda:
Sekarang, dalam wadah, Anda akan melihat bahwa direktori
/tmp/share_on_guest
(saya tidak akan menyarankan untuk me-mount direktori Anda/tmp
karena itu digunakan oleh sistem untuk hal-hal lain dan memiliki izin khusus) dimiliki oleh root. Dari sini, Anda dapat menggunakanchown
dalam wadah untuk mengubah kepemilikan ke yang sesuaiuid
dangid
untuk pengguna Anda di dalam wadah.Sebagai catatan, setelah mengubah kepemilikan dalam wadah menjadi eg pengguna dengan
uid
33 Anda akan melihat pada host bahwauid
sekarang ada 100033, yang masuk akal.sumber
/var/lib/lxd/containers
yang ditunjukkan ke/var/lib/lxd/storage-pools/lxd/containers
(dalam hal inilxd
bit terakhir adalah nama kumpulan penyimpanan ZFS saya). Semua kontainer di sana tampaknya memiliki 165536 uid / gid yang sama saat dijalankan dan dimilikiroot:root
saat off.lxc config
dan itu berfungsi seperti pesona!Ini jawaban terbaru untuk pertanyaan ini.
Pasang folder host
/var/www
seperti/var/test
dalam wadah.sumber
Anda dapat menetapkan perangkat tambahan ke wadah, dan ini bisa menjadi folder yang dapat diakses oleh host.
Perhatikan bahwa
<device>
itu hanyalah nama arbitrer yang Anda tetapkan, yang akan digunakan sebagai ID untuk manajemen perangkat selanjutnya.Misalnya, untuk memasang folder host "./host" sebagai "/ mnt / host" di wadah ...
Masih ada satu masalah - jika Anda ingin folder ini dapat ditulis oleh tuan rumah dan wadah, kepemilikan dan izin harus dikonfigurasi sesuai. Ini rumit oleh mode default LXD yang memvirtualisasi rentang numerik untuk nilai pengguna dan grup
id
. Namun, ada solusi mudah : bypass virtualisasi ini dengan mengonfigurasi wadah untuk dijalankan dengan hak istimewa yang setara dengan host ...Implikasi host-security penuh dari pendekatan ini tidak jelas bagi saya saat ini, tetapi tampaknya agak "terkandung" oleh virtualisasi. Risiko praktis tergantung pada bagaimana dan mengapa Anda akan menggunakan wadah. Lihat catatan teknis di https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers
Perhatikan lebih lanjut bahwa pendekatan ini mungkin paling berhasil jika Anda biasanya beroperasi dalam wadah sebagai pengguna non-root, seperti jika Anda melampirkan ...
sumber
env
Khususnya berbedahttp_proxy
. Contoh atasi:sudo http_proxy=http://[fe80::1%eth0]:13128 apt-get update
.http_proxy
, saya pikir solusi yang lebih mudah mungkin untuk mengaktifkan IPV4 seperti yang dibahas di sini .sudo dhclient
dalam wadah - atau perubahanmanual
kedhcp
dalam50-cloud-init.cfg
. Petunjuk bagus di sini: github.com/lxc/lxd/issues/1298Berdasarkan jawaban ph0t0nix yang sangat bagus , saya mengusulkan pendekatan langkah demi langkah berikut untuk server Ubuntu 18.04 saya:
Di host, tentukan UID pemilik rootfs:
Dalam wadah tentukan UID dari ubuntu (yaitu pengguna dalam wadah):
Buat folder bersama di host dan tambahkan ke wadah:
Sesuaikan host UID dari folder bersama (UID = host UID + tamu UID):
Tamu (pengguna ubuntu) sekarang memiliki akses ke folder bersama dan dapat menyesuaikan dalam akses wadah ke folder bersama menggunakan
chmod
.sumber
Saya sekarang memiliki solusi yang berfungsi dan aman untuk masalah ini, menggunakan profil LXD untuk menangani pemetaan antara UID dan GID dalam wadah dan pada host.
Inti yang sangat berguna dapat ditemukan di sini:
https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8
sumber
0777
izin alias "tolong-retas-sistem-dan-hancurkan-data-saya" tanpa alasan yang jelas! Hampir tidak pernah ada alasan untuk itu karena dapat dihindari dengan modifikasi yang lebih masuk akal seperti mengubah kepemilikan (grup). -1