LXC: Como montar uma pasta do host para o container?

21

Estou tentando montar uma pasta no host em um contêiner LXC.

O host tem uma pasta /mnt/ssd/solr_data criada (isso está atualmente no sistema de arquivos raiz, mas depois montarei uma unidade SSD lá, então estou me preparando para isso).

Eu quero que essa pasta seja montada como /data no contêiner.

Portanto, no arquivo fstab de containers, tenho o seguinte:

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

Mas isso é um não-ir, eu recebo este erro ao iniciar o contêiner:

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'
    
por David Parks 25.03.2013 / 12:57

6 respostas

14

Para criar o diretório automaticamente no contêiner, você também pode adicionar a opção create=dir no fstab:

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

Editar: isso é específico para o LXC. Consulte este tópico

Just like we already had "optional", this adds two new LXC-specific mount flags:

  • create=dir (will do a mkdir_p on the path)

  • create=file (will do a mkdir_p on the dirname + a fopen on the path)

This was motivated by some of the needed bind-mounts for the unprivileged containers.

    
por 02.06.2014 / 19:23
12

Em /var/lib/lxc/Solr4StandAlone/config , adicione uma linha de leitura:

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

Em seguida, lxc-stop pare seu contêiner e lxc-start seu contêiner novamente.

Isso é tudo o que é necessário.

ref: link de referência

    
por 03.08.2015 / 18:00
10

Eu tive que criar a pasta /data no contêiner local antes que a montagem funcionasse corretamente.

Eu também usei esta entrada fstab:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind     0       0
    
por 25.03.2013 / 14:38
9

A partir de 2015/09/30, uma alteração resultante de um patch de segurança interrompe a montagem em um caminho absoluto com lxc.mount.entry no arquivo de configuração.

Em vez disso, você pode usar um caminho relativo

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

Veja: link

    
por 11.11.2015 / 14:53
5

Como o LXC mudou ao longo do tempo, isso pode ser muito simples, mas me impressionou um pouco, então quis contribuir. Eu também criei uma essência para isso, então eu posso lembrar de mim mesmo, mas simplesmente usando o dispositivo de configuração lxc vai fazer o truque.

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

Nota É importante deixar a barra frontal do argumento de caminho devido a uma mudança mencionada por @biscuitNinja

Montando diretórios do container para o host

    
por 18.08.2016 / 17:03
1

Se você estiver usando libvirt para criar seu contêiner lxc , poderá fazer com que o diretório no host seja passthrough , conforme mostrado aqui:

root@localhost:/# cat /etc/libvirt/lxc/my_container.xml
...
 <filesystem type='mount' accessmode='passthrough'>
    <source dir='<dir on host>'/>
    <target dir='<dir on container>'/>
 </filesystem>
....
    
por 04.12.2015 / 11:21