Adicionando um diretório de host compartilhado a um Contêiner LXC / LXD

13

Eu tenho experimentado com o LXC / LXD no Ubuntu 14.04 e está tudo funcionando muito bem. Eu só preciso descobrir como obter diretórios compartilhados trabalhando entre minha máquina host e um contêiner para que eu possa abandonar o Virtualbox de uma vez por todas.

Eu vi esta página: link

O que fornece instruções, mas continuo recebendo erros.

Alguém sabe de alguma instrução simples e clara para que isso funcione? Qualquer ajuda muito apreciada.

    
por user47227 28.10.2015 / 13:39

4 respostas

0

Agora tenho uma solução segura e funcional para esse problema, usando perfis LXD para lidar com o mapeamento entre o UID e o GID no contêiner e no host.

Uma essência muito útil pode ser encontrada aqui:

link

    
por user47227 28.10.2015 / 14:33
16

As instruções no link que você mencionou estão corretas, mas podem precisar de mais explicações.

No host, você primeiro verifica a propriedade do diretório em que os dados do container estão armazenados. Executar

sudo ls -l /var/lib/lxd/containers

e verifique o proprietário do contêiner com o qual você gostaria de compartilhar o diretório. No meu caso, os uid e gid foram 100000.

Em seguida, use-os para alterar a propriedade do diretório que você deseja compartilhar:

sudo chown 100000:100000 /tmp/share_on_host

Compartilhe o diretório com o contêiner da maneira indicada em seu comentário:

lxc config device add mycontainer sharedtmp disk \
                  path=/tmp/share_on_guest source=/tmp/share_on_host

Agora, no container, você verá que o diretório /tmp/share_on_guest (eu não aconselharia montar seu diretório como /tmp , porque isso é usado pelo sistema para outras coisas e tem permissões especiais) é de propriedade de raiz. A partir daqui, você pode usar chown no contêiner para alterar a propriedade para os uid e gid apropriados para seu usuário no contêiner.

Como nota secundária, depois de alterar a propriedade no contêiner para, por exemplo, um usuário com uid 33 você verá no host que o uid agora é de 100033, o que faz sentido.

    
por ph0t0nix 05.03.2016 / 22:42
3

Você pode atribuir dispositivos adicionais ao contêiner, e estes podem ser pastas acessíveis pelo host.

$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
    Add a device to a container.
...

Observe que <device> é apenas um nome arbitrário atribuído, que será usado como um ID para o gerenciamento de dispositivos subsequente.

Por exemplo, para montar a pasta do host "./host" como "/ mnt / host" no container ...

lxc config device add mycontainer vartest disk source=$(pwd)/host path=/mnt/host

Permanece um problema - se você quiser que essa pasta seja gravável pelo host e pelo contêiner, a propriedade e as permissões precisam ser configuradas de acordo. Isso é complicado pelo modo padrão do LXD, que virtualiza os intervalos numéricos para os valores de usuário e grupo id . Existe uma solução fácil, no entanto : ignorar essa virtualização configurando o contêiner para ser executado com privilégios equivalentes ao host ...

lxc config set <container> security.privileged true

As implicações completas de segurança do host dessa abordagem não estão claras para mim neste momento, mas parecem estar um pouco "contidas" pela virtualização. O risco prático depende de como e porque você estará usando o contêiner. Veja notas técnicas em link

Além disso, observe que esta abordagem provavelmente funciona melhor se você normalmente opera no container como um usuário não-root, tal como se você conectasse com ...

lxc exec zesty -- su --login ubuntu
  • Notas adicionais sobre configuração: link
por nobar 23.09.2017 / 07:47
1

Aqui está uma resposta atualizada para esta pergunta.

Monte a pasta do host "/ var / www" como "/ var / test" no contêiner.

lxc config device adicionar mycontainer vartest disk source = / var / www caminho = / var / test

    
por Guest8354542556745 12.02.2017 / 11:41

Tags