Eu experimentei o mesmo. O motivo, no meu caso, é que o sistema de arquivos a ser montado por bind é de propriedade de UID: GID no intervalo da máquina host .
Um contêiner não privilegiado, por definição, usa UIDs fora do intervalo normal e um namespace de usuário para dar a aparência de normalidade no contêiner.
Observe que tudo abaixo do init
do contêiner pertence ao UID 1000000 numérico, conforme visto na máquina host. Dentro do container , o PID1 é a raiz do UID, como esperado.
O que isso significa? Se, na máquina host, você tiver um sistema de arquivos pertencente a um usuário normal (talvez root, talvez usuário regular) e, em seguida, vincule-o ao container, os UIDs (que são armazenados como inteiros) não fazem sentido dentro do contêiner .
Além disso, como os UIDs que o contêiner vê não pertencem ao seu namespace de usuário, nem mesmo o root dentro do contêiner pode chown
desses arquivos .
Solução: Na máquina host, chown
os arquivos para que eles pertençam à raiz dentro do contêiner. No meu caso, como na foto acima, eu tive que:
- Montar
tank/mydataset
em/tank/mydataset
na máquina host -
chown 1000000:1000000 /tank/mydataset
- (no arquivo de configuração do contêiner)
lxc.mount.entry = /tank/mydataset path/in/container/ none bind 0 0