Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 9379|Resposta: 0

O arquivo ou pasta não existe quando o volume Docker está montado

[Copiar link]
Publicado em 08/11/2021 09:20:35 | | |
Fundo

O Docker Volume nos permite montar dinamicamente alguns arquivos (como arquivos de configuração) para sobrescrever os arquivos originais na imagem ao iniciar um contêiner Docker, mas o que acontece se montarmos uma pasta ou arquivo que ainda não existe no host no contêiner? LZ encontrou esse tipo de problema em seu trabalho, então ele mesmo praticou e registrou os resultados experimentais da seguinte forma:

Montagem de pastas

O comportamento do Docker na montagem da pasta é uniforme, conforme segue:

  • Se a pasta não existir, ela é criada primeiro (ou recursivamente, se for uma pasta multinível)
  • Sobrescreva o conteúdo da pasta no container com o conteúdo da pasta no host


Os detalhes são os seguintes:

A pasta no host existe e não está vazia

anfitrião
recipiente
Resultado da montagem
A pasta não vazia A existePasta B que não existeCrie a pasta B no contanier primeiro e depois copie todos os arquivos da pasta A para o B
A pasta não vazia A existeA pasta B não vazia existePrimeiro, esvazie o conteúdo original da pasta chinesa B do contêiner, e depois copie a cópia chinesa A para B

Independentemente de a pasta B existir ou não, A vai sobrescrever completamente o conteúdo de B

A pasta no host existe, mas está vazia

anfitrião
recipiente
Resultado da montagem
Pasta vazia A que existeA pasta B não vazia existeO conteúdo da pasta chinesa B do contêiner é esvaziado

O conteúdo da pasta correspondente no contêiner é esvaziado

A pasta host não existe

anfitrião
recipiente
Resultado da montagem
Pasta A que não existeA pasta B não vazia existeCrie a pasta A no host, e o conteúdo da pasta chinesa do contêiner B será esvaziado
Pastas A/B/C que não existemA pasta B não vazia existeCrie as pastas A/B/C no host, e o conteúdo da pasta chinesa B do contêiner é esvaziado

O conteúdo da pasta correspondente no contêiner é esvaziado

resumo

A pasta host definitivamente vai sobrescrever a pasta chinesa do container:

anfitrião
recipiente
Resultado da montagem
A pasta não existe/a pasta existe, mas está vaziaA pasta não existe/existe, mas está vazia/existe e não está vaziaPeça chinesa do recipiente é coberta (esvaziada)
A pasta existe e não está vaziaA pasta não existe/existe, mas está vazia/existe e não está vaziao conteúdo da pasta chinesa do contêiner é sobrescrito (o conteúdo original é esvaziado, e o conteúdo da pasta no host é sobrescrito)

Montagem de arquivo

A maior diferença entre montagem de arquivos e montagem de pastas é:

  • O docker proíbe montar arquivos que não existem no host em arquivos que já existem no container
  • A montagem de arquivos não tem efeito em outros arquivos na mesma pasta

Além disso, seu comportamento de sobrescrevimento é consistente com a montagem de pastas, ou seja:

  • Sobrescreva o conteúdo do arquivo no contêiner com o conteúdo do arquivo no host


Os detalhes são os seguintes:

anfitrião

anfitrião
recipiente
Resultado da montagem
Arquivos que não existem configA.jsDocumentos que já existem congfigB.jsErro, você está tentando montar um diretório em um arquivo (ou vice-versa)? Verifique se o caminho do host especificado existe e é o tipo esperado. Ele gera dois diretórios vazios configA.js e configB.js no host ao mesmo tempo, mas o container não pode iniciar

anfitrião

anfitrião
recipiente
Resultado da montagem
Arquivo atual configA.jsArquivo atual congfigB.jsitem chinês contêiner configB.js permanecem os mesmos, mas o conteúdo do arquivo é sobrescrito pelo conteúdo congfigA.js
Arquivo atual configA.jsArquivos que não existem congfigB.jsUm novo arquivo configB.js no contêiner, com o conteúdo do arquivo configA.js, permanece inalterado configB.js todos os outros arquivos sob o arquivo

resumo

O arquivo no host sempre sobrescreverá a pasta chinesa do container

anfitrião
recipiente
Resultado da montagem
Arquivos que não existemDocumentos que já existemAtos proibidos
Documentos existentesArquivos que não existem / arquivos que já existemAdicionar/sobrescrever (cria um diretório caso ele não exista)

conclusão

Montagem de pastas

  • Se você permitir que pastas inexistentes ou pastas vazias sejam montadas no contêiner, as pastas correspondentes no contêiner serão esvaziadas
  • Anexar uma pasta não vazia a um contêiner irá sobrescrever a pasta original no contêiner

Montagem de arquivo

  • É proibido montar arquivos inexistentes em arquivos que já existam no contêiner
  • Arquivos existentes serão sobrescritos quando anexados ao contêiner, e se os arquivos não existirem, eles serão criados

Cenários de aplicação

  • A partir da análise acima, pode-se ver que a montagem de pastas é usada para sobrescrever arquivos em toda a pasta, então pode ser usada quando um grande número de arquivos precisa ser montado no contêiner; além disso, se uma pasta vazia ou inexistente for montada, geralmente é usada ao contrário: ou seja, após o início do contêiner, alguns arquivos (como logs) podem ser gerados sob a pasta do ponto de montagem no contêiner, e nesse momento, podem ser vistos diretamente na pasta no host correspondente.
  • A montagem de arquivos é frequentemente usada para montar arquivos de configuração e modificar dinamicamente a configuração padrão em tempo de execução, pois ela sobrescrive apenas um único arquivo sem afetar outros arquivos na mesma pasta no container.

Transferido de:O login do hiperlink está visível.

(Fim)




Anterior:O Elasticsearch usa o elasticdump para fazer backup e migrar dados
Próximo:Solução de exceção de erro do POI no Docker
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com