Sto provando a creare un contenitore LXC da un tar.gz locale di un rootfs di un altro contenitore ma non ho trovato nessuna opzione in lxc-create da fare così. Posso creare un nuovo contenitore, rimuovere il suo rootfs e sostituirlo con il mio rootf untared ma questo è troppo maldestro. C'è un modo migliore per farlo?Creare un contenitore LXC da un modello locale (tar.gz)
risposta
Dopo un po 'di ricerche ho trovato this script che prende un tar.gz e crea un contenitore LXC.
$ lxc-create -n test-container -t ./salt_tarball -- --network_link lxcbr0 --imgtar /root/template.tar.gz
nota qui che salt_tarball
è il nome dello script.
Supposto che si sta utilizzando docker
:
cat exampleimage.tar.gz | sudo docker import - template:new
vedere di più al https://docs.docker.com/reference/commandline/cli/#import
Utilizzando that script @syed sopra citato ha bisogno di più lavoro (Ubuntu 16.04, LXC 2.0, ancora non LXD):
Prima di tutto bisogna copiare lo script nella directory di modello e renderlo eseguibile
$ cp salt_tarball /usr/share/lxc/templates/lxc-salt_tarball
$ chmod +x /usr/share/lxc/templates/lxc-salt_tarball
Assicurarsi di aggiungere lxc- davanti al nome durante la copia.
Per creare il nuovo contenitore utilizzando lo script fare
$ lxc-create -n test-container -t salt_tarball -- --network_link lxcbr0 --imgtar /root/template.tar.gz
cioè chiamata salt_tarball senza ./ e senza la lxc- aggiunto sopra. L'opzione --network_link è facoltativa.
Quando si crea il proprio tar.gz da un contenitore esistente, assicurarsi di utilizzare --numeric-owner
.
Non è necessario copiare lo script in/usr/share/lxc. Basta fare riferimento allo script con il suo percorso completo, o '$ (pwd)/salt_tarball' – Pwnna
Spiacente, non usare Docker. Lxc normale. – syed