Estou tentando experimentar o namespace de montagem no Ubuntu. Até agora, posso criar um namespace de montagem vazio usando o seguinte:
# mkdir test
# unshare --mount
# mount none test -t tmpfs
# cd test
# pivot_root . .
# cd / <--- test becomes /
Quando verifico um LXC
contêiner do Ubuntu, o mount
comando exibe o seguinte:
Como o namespace mount inicialmente obtém uma cópia dos pontos de montagem, presumo que o /dev/sda1
interior do contêiner seja o global /dev/sda1
(porque não há /dev/sda1
dentro do contêiner uma vez iniciado), e ainda assim o conteúdo do /
interior do contêiner corresponde ao seu rootfs. Alguém familiarizado com o LXC pode explicar quais operações de montagem o LXC faz antes de fazer pivot_root
dentro do contêiner?
Para ver o que o LXC realmente faz, vamos criar um novo contêiner e rastrear seu processo de inicialização por meio de
strace(1)
:O rastreamento resultante é gravado no arquivo lxclog e aqui estão as partes mais relevantes dele (elipses são adicionadas por mim onde algumas chamadas não significativas são omitidas):
Primeiro, um novo processo (PID 14677) é gerado por
lxc-start
(PID 14671) usandoclone(2)
e é colocado no novo namespace de montagem (CLONE_NEWNS
flag). Em seguida, dentro desse novo namespace de montagem, o sistema de arquivos raiz do contêiner ( /var/lib/lxc/testcontainer/rootfs ) é montado em bind (MS_BIND
sinalizador ) para /usr/lib64/lxc/rootfs , que se torna a nova raiz. Finalmente, quando a inicialização do container é finalizada, o processo 14677 se torna oinit
.O importante aqui é que o diretório raiz do namespace de montagem do contêiner é a montagem de ligação do diretório pertencente ao FS raiz do host . É por isso que a montagem raiz do contêiner ainda tem /dev/sda1 como fonte na
mount(8)
saída. No entanto, também há uma diferença que não é mostrada pormount(8)
- para vê-la, tentefindmnt(8)
dentro do contêiner:Compare isso com a saída do
findmnt(8)
sistema host:Observe que a fonte é a mesma, mas dentro do contêiner você também vê o diretório de origem da montagem de ligação.