Aqui estão as camadas docker que desejo implementar: https://stackoverflow.com/questions/31222377/what-are-docker-image-layers
Quero montar uma pasta do host para o docker com:
docker run \
-v /path/to/host/large_size_folder:/var/large_size_folder \
my_docker \
/bin/bash -c "rm -rf /var/large_size_folder/file1 && echo "hello" > /var/large_size_folder/file2"
Como o tamanho /path/to/host/large_size_folder
é muito grande, não quero copiá-lo para a imagem do docker. Então eu uso -v
para montá-lo na imagem do docker.
E então, executo o docker e uso o bash para add/modify/delete
arquivos dentro de " /var/large_size_folder
".
Mas esta ação também irá adicionar/modificar/excluir arquivos do host.
É possível fazer alguma modificação sem docker layer only
afetar o diretório Host ao executar /bin/bash -c "rm -rf /var/large_size_folder/file1 && echo "hello" > /var/large_size_folder/file2"
dentro do docker container
?
Você poderia implementar uma solução adicionando manualmente um
overlayfs
(que o Docker também usa internamente para gerenciar volumes), para que as alterações no sistema de arquivos sejam gravadas em um diretório separado e possam ser desfeitas a qualquer momento.Portanto, configure o seguinte: (crie os diretórios - você pode alterar a localização deles conforme achar necessário)
/path/to/host/large_size_folder
(já existe) é o diretório da camada inferior no arquivooverlayfs
, contendo os dados originais (não será modificado)/tmp/large_size_folder_changes
é o diretório da camada superior onde as modificações serão armazenadas/tmp/overlayfs
é o diretório de trabalho paraoverlayfs
(diretório interno necessário paraoverlayfs
funcionar)/mnt/large_size_folder_merged
é o diretório mesclado onde podemos acessar o conteúdo combinado, e é isso que você deseja mapear para o contêiner DockerO comando para montar o
overlayfs
é então:E então, para criar seu contêiner Docker, use:
Agora, quaisquer alterações feitas
/var/large_size_folder
dentro do contêiner serão refletidas no/mnt/large_size_folder_merged
host.As alterações só podem ser vistas internamente
/tmp/large_size_folder_changes
, enquanto o original/path/to/host/large_size_folder
permanece inalterado.Veja também aqui: Como faço para usar o OverlayFS?