De acordo com os documentos oficiais, o MongoDB com WiredTiger deve ser executado em Linux com o sistema de arquivos XFS. Ainda assim, a imagem oficial do docker para mongo usa ext4, o que significa que recebemos um aviso sempre que inicializamos um contêiner:
Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem"
Então, por que a imagem oficial do docker não usa XFS? Esta é uma preocupação de importância insignificante?
A resposta completa.
Uma imagem docker não possui um sistema de arquivos. Uma imagem docker é um monte de
tar
arquivos, cada um representando uma camada, além de alguns arquivos JSON com os metadados da imagem. Quando uma imagem docker é puxada para um host, esses arquivos são descompactados no sistema de arquivos do host, geralmente em/var/lib/docker
. Quando um contêiner docker é iniciado, essas camadas são montadas dentro do contêiner usando OverlayFS, um FS de união que permite combinar diferentes subdiretórios do sistema de arquivos com diferentes camadas de imagem em um único sistema de arquivos virtual. Se houver volumes, eles serão montados em ligação e dentro de um contêiner, você os verá como o sistema de arquivos original que o host possui/var/lib/docker
(a menos quetmpfs
seja usado).Conseqüentemente, está fora do controle dos autores da imagem em qual FS ele será executado. Se você quiser usar um sistema de arquivos específico, como
XFS
dentro do contêiner, execute-o em um sistema que use esse FS/var/lib/docker
ou monte um FS separado no contêiner. Não funcionará em Mac ou Windows, pois o Docker Desktop nesses sistemas usa uma VM interna para executar contêineres e não acho que seja possível modificar o FS desta VM.