Maneira fácil de transferir arquivos entre o host e o contêiner LXC no LVM

5

Esta é uma tarefa fácil no caso de contêineres que compartilham o mesmo sistema de arquivos, mas não tenho certeza qual seria a abordagem apropriada para contêineres que usam discos LVM.

Sei que posso usar rsync ou scp , mas gostaria de saber se é possível fazer isso sem configurar ssh / ftp / http servers. Além disso, seria bom poder transferir os arquivos sem modificar a configuração do contêiner, pois isso exigiria uma reinicialização do contêiner. Seria uma boa ideia evitar pastas compartilhadas montadas persistentes, pois elas podem trazer um risco de segurança em potencial (a opção easy mount / umount deve estar disponível).

Uma opção que surgiu em minha mente seria usar um servidor WebDAV no host e montá-lo no contêiner, mas ainda não o analisei e não tenho certeza sobre a penalidade de desempenho que ele pode trazer. Outra opção que eu pensei é montar a partição LVM no host, mas não tenho certeza se isso é seguro.

Atualizar

Na minha configuração, estou criando os contêineres usando o seguinte comando:

lxc-create -t ubuntu -n "${NAME}" -B lvm --vgname lxc-vg --fssize "${SIZE}"

Estou usando a configuração padrão, exceto pelo recurso autostart, que é obtido adicionando as seguintes linhas ao arquivo /var/lib/lxc/${NAME}/config :

lxc.start.auto = 1
lxc.start.delay = 0
    
por s3v3n 12.03.2015 / 00:22

3 respostas

9

Resposta revisada: Os contêineres LXC compartilham o mesmo kernel do host, portanto, qualquer sistema de arquivos que eles montam deve ser acessível de fora.

Se você fizer um cat /proc/mounts no host, poderá ver os sistemas de arquivos contêineres?

Se você vir uma linha como /dev/mapper/... /var/lib/lxc/o1/rootfs ext4 ... , poderá acessar /var/lib/lxc/o1/rootfs do host, sem comandos adicionais.

    
por 18.03.2015 / 12:12
3

Uma maneira melhor, de alguma forma incorporada, de transferir dados do host para o contêiner lxc é a linha 4 no código abaixo:

1 $ mkdir /tmp/transferDir
2 $ cp <some files> /tmp/transferDir/<some files>
3 $ cd /tmp
4 $ tar -C transferDir -c . | lxc-attach -n <container_name> -- /bin/sh -c "tar -C /tmp/ -vx; chmod 1777 /tmp;"
5 $ rm -r /transferDir

O chmod 1777 /tmp é importante, caso contrário, depois de copiar direitos nessa pasta (os containers / tmp) são alterados e você teria problemas como este freqüente sobre o servidor xyz-sql não poder reiniciar e outros.

    
por 24.05.2018 / 10:51
2

Eu sei que essa é uma pergunta antiga, mas para alguém que esteja terminando aqui enquanto procura por copiar os arquivos entre o host e o contêiner, isso pode ajudar.

Para puxar um arquivo 'my-file' do contêiner 'container-name' para a pasta atual, use:

lxc file pull container-name/any-path/my-file .

Para enviar o 'meu arquivo', use:

lxc file push my-file container-name/any-path/

Para empurrar uma pasta 'my-dir' recursiva, use:

lxc file push -r my-dir container-name/any-path/
    
por 22.06.2018 / 11:11