Torne a raiz da imagem só de leitura e, em seguida, conceda montagens graváveis estritamente delimitadas apenas para o estado de execução documentado.
Isto é importante numa aplicação auto-hospedada que atualmente grava a configuração, as caches, os ficheiros temporários e os carregamentos num sistema de ficheiros indiferenciado do contentor. O risco operacional é que ativar o modo só de leitura sem mapear os caminhos de escrita possa impedir o arranque, enquanto adicionar uma única montagem gravável ampla anula o objetivo de contenção. Comece por guardar uma linha de base, faça uma alteração reversível de cada vez e pare sempre que o ramo observado já não corresponder ao caminho de configuração pretendido.
Estabelecer a Linha de Base dos Sistemas de Ficheiros Raiz dos Contentores Só de Leitura
Antes de alterar as definições, registe as tentativas de escrita, os caminhos necessários, a propriedade, a utilização de tmp, o comportamento das atualizações de pacotes e a persistência após a recriação. Capture a configuração original e uma execução semelhante à de produção, para que as melhorias posteriores sejam comparadas com a mesma carga de trabalho, e não com a memória ou com um estado sintético de inatividade.
Utilize o sistema de ficheiros raiz só de leitura atual para confirmar o controlo suportado e a respetiva semântica. Considere as predefinições um ponto de partida conhecido, não uma prova de que a definição corresponde a este servidor, à combinação de clientes ou ao objetivo de recuperação.
Defina os critérios de aceitação e as condições de paragem antes de editar. O sinal de aceitação tem de ser visível nos registos, no estado do protocolo, no resultado da aplicação ou nos dados restaurados; a condição de paragem tem de impedir um acesso mais amplo, perda de dados, esgotamento de recursos ou uma indisponibilidade que consuma a próxima janela de recuperação.
Aplicar a Alteração dos Sistemas de Ficheiros Raiz dos Contentores Só de Leitura em Fases Controladas
Passo 1: Rastreie as escritas durante um arranque representativo e o fluxo de trabalho normal, separando o estado persistente do estado temporário. Após a alteração, inspecione imediatamente o estado esperado; se este não aparecer, desfaça este passo antes de aplicar o seguinte.
Passo 2: Ative read_only, adicione tmpfs para os caminhos efémeros e associe montagens ou volumes nomeados apenas aos diretórios persistentes necessários. Após a alteração, inspecione imediatamente o estado esperado; se este não aparecer, desfaça este passo antes de aplicar o seguinte.
Passo 3: Remova as capacidades não utilizadas e teste o mesmo ponto de entrada da imagem com o utilizador não root configurado. Após a alteração, inspecione imediatamente o estado esperado; se este não aparecer, desfaça este passo antes de aplicar o seguinte.
read_only: true
tmpfs:
- /tmp:size=256m,mode=1777
volumes:
- app-data:/var/lib/app
Interpretar os Ramos de Sucesso, Falha e Exceção
Um sucesso significa que a aplicação conclui o trabalho normal e a recriação sem escrever fora das montagens aprovadas. Registe a carga de trabalho exata, a versão e o momento que produziram o resultado; um teste mais leve não prova que o problema original tenha sido resolvido.
Uma falha significa que os scripts de arranque tentam modificar caminhos da imagem, o espaço temporário se esgota ou uma atualização espera uma alteração de pacote dentro do contentor. Não compense enfraquecendo todos os controlos adjacentes. Regresse à última linha de base limpa e isole se a discrepância pertence à identidade, à rede, ao armazenamento, à prontidão da aplicação ou à capacidade.
Perante uma exceção ou um resultado ambíguo, remova read_only apenas para diagnóstico, capture o caminho em falta e substitua a exceção por uma montagem mais restrita. Escale apenas depois de o discriminador de baixo risco ser repetível e de as evidências mostrarem que é necessária uma alteração mais profunda da plataforma ou do hardware.
Verificar a Persistência sob a Carga Original do Servidor Doméstico
Repita o mesmo caminho do cliente, tamanho do ficheiro, simultaneidade, evento de suspensão ou reinício e carga de trabalho concorrente utilizados na linha de base. Execute pelo menos dois ciclos, para que um sucesso com a cache aquecida, uma única reconexão afortunada ou um arranque limpo isolado não sejam confundidos com persistência.
Confirme tanto o sucesso como a contenção: a aplicação conclui o trabalho normal e a recriação sem escrever fora das montagens aprovadas, enquanto os utilizadores, serviços, partilhas e caminhos administrativos não relacionados mantêm o comportamento original. Consulte o fluxo de trabalho ZimaSpace relacionado quando a alteração tocar num limite vizinho de armazenamento, rede ou recuperação.
Feche a alteração apenas quando o sinal de aceitação persistir e a reversão continuar utilizável. Se os scripts de arranque tentarem modificar caminhos da imagem, o espaço temporário se esgotar ou uma atualização esperar uma alteração de pacote dentro do contentor, pare a automatização, preserve os registos e a configuração guardada e regresse ao último estado verificado, em vez de acumular mais alterações.
FAQ sobre Ramificação de Consultas, Decisão Final e Teste Final
Estas perguntas sobre ramificação de consultas abrangem as decisões seguintes que os utilizadores normalmente pesquisam depois de a configuração principal funcionar. Estendem o limite sem introduzir um caminho de reparação não testado.
Aplique cada resposta apenas quando a respetiva condição corresponder ao ambiente medido. Diferenças de versão, protocolo, sistema de ficheiros, cliente e limite de confiança podem alterar o ramo correto.
Mantenha as respostas junto do manual de operações e atualize-as após atualizações ou alterações de topologia. Qualquer exceção que amplie o acesso de escrita, a acessibilidade da rede ou a autoridade de eliminação exige um novo teste de reversão e recuperação.
O modo só de leitura protege os volumes montados?
Não. As montagens de associação e os volumes graváveis permanecem graváveis, pelo que continuam a exigir privilégios mínimos, cópias de segurança e isolamento de caminhos.
Todas as imagens podem ser executadas em modo só de leitura?
Não sem ajustes. As imagens que instalam pacotes ou reescrevem a configuração durante o arranque precisam de uma compilação diferente ou de caminhos graváveis explícitos.
/tmp deve ser sempre um tmpfs?
Apenas quando o tamanho, as flags de execução e o comportamento de persistência corresponderem à aplicação; teste importações grandes e atualizações.
Conclusão: A configuração está concluída quando a aplicação conclui o trabalho normal e a recriação sem escrever fora das montagens aprovadas, o ramo de falha é compreendido e a reversão documentada não depende do componente que está a ser alterado.
Protocolo de teste final: restaure a linha de base guardada, aplique uma vez a alteração aprovada, repita a carga original semelhante à de produção, verifique o sinal de sucesso e o limite de contenção e, em seguida, execute a reversão com dados descartáveis. Mantenha a alteração apenas quando todas as cinco observações forem concordantes.
Suporte e Dicas
Mais para Ler

Uma galeria autoalojada pode preservar o emparelhamento das Live Photos da Apple?
Uma decisão condicional para um servidor doméstico relativa ao emparelhamento de Live Photos da Apple, com testes controlados, interpretação dos resultados, reversão e perguntas...

Pode importar o Google Takeout e as cópias de segurança do telemóvel para uma única biblioteca de fotografias?
Uma decisão condicional para um servidor doméstico com importação combinada de fotografias, testes controlados, interpretação dos resultados, reversão e perguntas frequentes específicas.

O Immich pode usar uma biblioteca externa sem assumir a propriedade dos ficheiros?
Uma decisão condicional de servidor doméstico sobre a propriedade de bibliotecas externas do Immich, com testes controlados, interpretação dos resultados, reversão e perguntas frequentes...

