Solução da comunidade

Utilizar volumes Docker só de leitura nas aplicações personalizadas do ZimaOS

A ZimaOS user found that the WebUI did not preserve Docker :ro or readonly mount options. Community replies clarified that standard Docker on ZimaOS supports the flags through Compose/CLI, while IceWhale said richer WebGUI mount options were being designed.

O Docker no ZimaOS suporta montagens vinculadas só de leitura, mas a WebUI de Aplicação Personalizada do ZimaOS discutida neste tópico da comunidade não preserva de forma fiável opções como :ro ou :readonly ao editar um mapeamento de volume. Trata-se de uma limitação da WebUI, não de uma limitação do próprio Docker.

A solução alternativa da comunidade consiste em exportar ou escrever manualmente o YAML do Compose e criar a aplicação com o Docker Compose ou a CLI. A IceWhale reconheceu, em dezembro de 2025, que estavam a ser concebidas futuras WebGUIs com mais opções de edição. Uma resposta posterior, a 24 de agosto de 2026, continuava a descrever o comportamento da interface relativo ao modo só de leitura como não resolvido; por isso, os utilizadores atuais devem verificar a montagem efetiva do contentor em vez de presumirem que a interface preservou a flag.

O Docker suporta montagens vinculadas só de leitura

A documentação atual do Docker sobre montagens vinculadas suporta as opções ro e readonly.

Com a forma abreviada -v sintaxe:

docker run -v /host/path:/container/path:ro IMAGE

O Docker também aceita só de leitura como opção na sintaxe documentada de montagem vinculada. --mount:

docker run --mount type=bind,src=/host/path,dst=/container/path,readonly IMAGE

Uma montagem só de leitura impede o contentor de escrever através dessa montagem, permitindo-lhe ainda ler os ficheiros do anfitrião.

O que a WebUI do ZimaOS estava a fazer

O utilizador original relatou que, quando um volume era editado na WebUI, a interface não reconhecia o :ro flag. Uma resposta da comunidade descreveu o comportamento com mais precisão: a interface reescrevia a montagem e removia silenciosamente a opção só de leitura quando a aplicação era guardada ou reaberta.

Essa distinção é importante. O motor Docker subjacente consegue criar a montagem correta em modo só de leitura, mas o campo de volumes da interface gráfica pode não representar todas as opções de montagem do Docker.

O que a IceWhale disse sobre a limitação

A 26 de dezembro de 2025, Zima-Jerry respondeu que as futuras WebGUIs teriam mais opções de edição e que a interface ainda estava a ser concebida. Mais tarde, o tópico recebeu uma resposta, a 24 de agosto de 2026, que classificava a ausência de feedback sobre o modo só de leitura como uma preocupação de segurança e pedia uma previsão.

O tópico original não contém uma confirmação posterior da IceWhale de que a limitação da interface tenha sido corrigida. Por esse motivo, não assuma que um campo atual da WebUI seja seguro para :ro até verificar a montagem efetiva do contentor.

Utilize o Docker Compose para montagens só de leitura

A solução alternativa da comunidade consistia em exportar do ZimaOS o YAML do Compose da aplicação, editar a montagem e recriar o contentor com o Docker Compose padrão.

O Docker Compose suporta um modo de acesso como terceiro campo na sintaxe curta de volumes:

services:
  app:
    image: your/image:latest
    volumes:
      - /DATA/example:/data:ro

A documentação de referência do ficheiro Compose atual do Docker documenta ro como o modo de acesso só de leitura para um volume montado ou um caminho bind.

Um fluxo de trabalho prático no ZimaOS

  1. Abra as definições da aplicação personalizada.
  2. Exporte o YAML do Compose se a sua versão atual do ZimaOS disponibilizar essa opção.
  3. Guarde uma cópia de segurança antes de editar.
  4. Adicione :ro apenas aos caminhos do anfitrião que o contentor não deve modificar.
  5. Valide o YAML.
  6. Utilize um terminal autorizado para executar o Docker Compose.
  7. Verifique a montagem resultante antes de confiar-lhe ficheiros sensíveis.

Um comando Compose normal é:

docker compose up -d

Execute-o a partir do diretório que contém o ficheiro Compose e tenha em conta que um projeto Compose gerido manualmente pode já não funcionar exatamente como uma aplicação totalmente gerida pela interface do ZimaOS.

Verifique se a montagem é realmente só de leitura

Não confie apenas no YAML ou na etiqueta da WebUI. Inspecione o contentor em execução:

docker inspect CONTAINER_NAME

Em Mounts na secção, o Docker mostra se a montagem permite escrita. Uma montagem bind corretamente só de leitura deverá apresentar:

"RW": false

A documentação do próprio Docker utiliza este método de inspeção para verificar montagens só de leitura.

Teste cuidadosamente o limite de acesso

Também pode testar a partir do interior de um contentor descartável ou não crítico, tentando criar um ficheiro no caminho montado. Uma montagem só de leitura corretamente configurada deverá rejeitar a escrita.

Não faça o teste substituindo um ficheiro importante. Utilize um nome de ficheiro temporário inofensivo e remova do anfitrião quaisquer artefactos de teste se a escrita for inesperadamente bem-sucedida.

:ro e :readonly são opções do Docker, mas a sintaxe é importante

O título original menciona ambos :ro e :readonly. A documentação atual do Docker sobre montagens bind aceita ambos os nomes nos contextos aplicáveis de opções de montagem. A sintaxe curta mais utilizada no Compose é:

/host/path:/container/path:ro

Para montagens longas ou --mount sintaxe, só de leitura também está documentado. Associe a opção à sintaxe do Docker que está realmente a utilizar, em vez de colar um sufixo num campo do ZimaOS que espera apenas um caminho do contentor.

Uma montagem só de leitura é diferente de um sistema de ficheiros do contentor só de leitura

O Docker Compose também tem uma opção ao nível do serviço read_only opção. Isso torna o sistema de ficheiros raiz do contentor só de leitura. Não é o mesmo que marcar uma montagem bind como só de leitura.

Por exemplo:

services:
  app:
    image: your/image:latest
    read_only: true

Utilize isso apenas quando a aplicação estiver concebida para ser executada com um sistema de ficheiros raiz só de leitura e os caminhos necessários com permissão de escrita estiverem montados separadamente.

Evite voltar a guardar o volume numa interface que elimina o sinalizador

Uma resposta da comunidade sugeriu tratar a WebUI do ZimaOS como efetivamente só de escrita para as definições de volumes depois de uma montagem só de leitura ter sido criada manualmente. A preocupação é que reabrir e guardar a aplicação através de uma interface gráfica que não compreende a opção possa reescrever a montagem sem :ro.

Antes de efetuar alterações posteriores na interface, exporte a configuração atual do Compose e verifique novamente a montagem.

Porque é importante para a segurança

As montagens só de leitura são frequentemente utilizadas para dar a uma aplicação acesso a configurações, multimédia, certificados, cópias de segurança ou dados de origem, sem lhe conceder permissão para modificar esses ficheiros.

Se uma interface alterar silenciosamente uma montagem de só leitura para leitura e escrita, o contentor recebe mais acesso ao sistema de ficheiros do anfitrião do que o administrador pretendia. É por isso que a verificação com docker inspect é importante até que a própria interface represente a opção de forma fiável.

Lista de verificação das montagens Docker só de leitura do ZimaOS

  1. Confirme que a aplicação precisa realmente apenas de acesso de leitura.
  2. Não parta do princípio de que a WebUI do ZimaOS preserva :ro.
  3. Exporte ou escreva um ficheiro Compose.
  4. Utilize /host:/container:ro para a montagem pretendida.
  5. Inicie o projeto com o Docker Compose padrão.
  6. Verifique a montagem com docker inspect.
  7. Confirme RW é false.
  8. Tenha cuidado ao reabrir ou voltar a guardar a aplicação na WebUI.
  9. Guarde uma cópia do YAML do Compose funcional para recuperação.

Perguntas frequentes sobre montagens Docker só de leitura no ZimaOS

O Docker do ZimaOS suporta :ro?

Sim, ao nível do motor Docker/Compose. O tópico de origem identifica a limitação como estando na forma como a WebUI do ZimaOS trata as opções de montagem.

O problema da WebUI foi confirmado como resolvido?

Não neste tópico de origem. Uma resposta de 24 de agosto de 2026 ainda descrevia o comportamento só de leitura da interface como não resolvido.

Qual é a melhor solução temporária atualmente?

Exporte ou crie um ficheiro YAML do Compose, adicione aí o ponto de montagem só de leitura e execute docker compose up -de verifique o contentor em execução com docker inspect.

read_only ao nível do serviço é o mesmo que um volume :ro?

Não. O read_only: true afeta o sistema de ficheiros raiz do contentor. Um :ro volume afeta apenas esse ponto de montagem específico.

Porque é que perder silenciosamente :ro constitui um problema de segurança?

Porque o contentor pode obter acesso de escrita aos ficheiros do anfitrião que o administrador pretendia disponibilizar apenas para leitura.