A origem do comportamento parece o padrão alterado da operação de subárvores compartilhadas . A documentação do kernel Documentation / sharedsubtree.txt menciona que private
é o padrão, enquanto na verdade é shared
, que pode ser obtido visualizando /proc/self/mountinfo
após montar um diretório com --bind
. / p>
root@localhost ~]# mount --bind /chroot/base /chroot/test
[root@localhost ~]# grep test /proc/self/mountinfo
234 62 253:1 /chroot/base /chroot/test rw,relatime shared:1 - xfs /dev/vda1 rw,attr2,inode64,noquota
Isso causa a propagação de montagens sob / chroot / test de volta para / chroot / base que afeta as outras montagens de bind derivadas de / chroot / base .
Para recuperar o comportamento antigo, é necessário especificar --make-private
explicitamente ou private
como opção de montagem em / etc / fstab .
[root@localhost ~]# umount /chroot/test
[root@localhost ~]# mount --bind --make-private /chroot/base /chroot/test
[root@localhost ~]# grep test /proc/self/mountinfo
234 62 253:1 /chroot/base /chroot/test rw,relatime - xfs /dev/vda1 rw,attr2,inode64,noquota
Acho que é melhor aplicar a opção private
a qualquer montagem de bind que você queira que o comportamento antigo volte.
Atualizar
O padrão do kernel ainda é private
, mas systemd
está remontando os sistemas de arquivos como shared
devido ao melhor suporte ao contêiner. Do site do github do systemd :
Mark the root directory as shared in regards to mount propagation. The kernel defaults to "private", but we think it makes more sense to have a default of "shared" so that nspawn and the container tools work out of the box. If specific setups need other settings they can reset the propagation mode to private if needed. Note that we set this only when we are invoked directly by the kernel. If we are invoked by a container manager we assume the container manager knows what it is doing (for example, because it set up some directories with different propagation modes).