Header Ads

Como montar ou criar um link simbólico de um único arquivo em um contêiner Docker

O volume do Docker e as montagens de ligação são usadas para ligar diretórios no sistema operacional host a locais no sistema de arquivos do contêiner. Embora sejam comumente usados ​​para montar diretórios inteiros, você também pode usá-los para criar um link simbólico para arquivos individuais.

Symlink para Docker a partir do host

Montar diretórios inteiros funciona bem se você estiver sobrescrevendo uma lista inteira de arquivos de configuração, mas se quiser apenas definir um como destino, você &’ precisará usar uma montagem de arquivo único. Isso também é útil se você deseja ter várias montagens no mesmo diretório, mas de locais diferentes. Ele funciona como um link simbólico regular do Linux, exceto que é tratado por meio do Docker e cruza a ponte entre o sistema de arquivos do host e do contêiner.

Montagens normais de volume do Docker exigem que você monte em um diretório de destino, dentro do qual o volume será vinculado.

 volume docker criar nginx-config docker run -d \ --name devtest \ --mount source = nginx-config, target = / etc / nginx \ nginx: mais recente 

No entanto, com montagens de ligação, a fonte pode ser um diretório ou arquivo no host. Montagens de volume não suportam isso e, embora você geralmente queira usá-las, você deve usar as montagens de ligação de nível inferior se quiser montar arquivos únicos.

Para fazer isso, você pode executar o contêiner com a sinalização --mount type = bind, que oferece suporte a arquivos individuais se você especificar o caminho:

 docker run -it \ --mount type = bind, source = / path / file. cfg, target = / etc / example / file. cfg \ nginx sh 

Publicidade

Alternativamente, se você realmente quiser usar os volumes do Docker, pode criar um volume apenas com o arquivo que planeja montar, montá-lo em um diretório temporário no contêiner e, em seguida, criar um link simbólico real dentro do contêiner (no Script de compilação do Docker) que vincularia ao diretório temporário com o arquivo. Essa é provavelmente uma solução pior do que uma montagem de ligação geral, mas permite que você armazene os dados por meio da API de volume do Docker.

Nenhum comentário