Host de compartilhamento simples de arquivo Docker <> docker
Sou novo no docker. Estou tentando executar um docker e adicionar alguns arquivos. O usuário deve ser capaz de alterar esses arquivos e deixar o docker fazer a mágica. O desempenho não é importante, mas sim a simplicidade. Deve ser possível executar o docker sem mais argumentos, apenas "-it". Tentei usar Volumes, mas ...
docker-compose.yml:
version: '3.4'
volumes:
data:
name: templatevolume
services:
template:
image: template
volumes:
- data:/usr/template/:rw
build:
context: .
dockerfile: ./Dockerfile
... o Volume será criado, mas não atribuído ao Docker. Existe uma maneira melhor? Preciso atribuir o Volume ao Docker no comando run? Conselho por favor.
Dockerfile:
FROM fedora:latest
LABEL Name=template Version=0.0.1
...
é um Dockerfile longo, mas não faço nada com Volumes aqui e nada de especial, apenas instalo pacotes.
Respostas
Você pode usar montagens de ligação. Eles irão montar um diretório de sua máquina física em seu contêiner docker.
Para esse volume, você precisa especificar a origem da montagem, que é o caminho para o arquivo ou diretório no host daemon Docker (seu computador) e o destino , que é o caminho onde o arquivo ou diretório é montado no contêiner (dentro do recipiente).
- "source:target"
Você não precisa criar nenhum volume do docker.
Vamos criar um diretório oculto .data no diretório do seu arquivo docker-compose yml
$ mkdir .data
Você docker-compose file agora:
version: '3.4'
services:
template:
image: template
volumes:
- data:/usr/template/:rw
- "./.data:/usr/template/"
build:
context: .
dockerfile: ./Dockerfile
É isso aí. Um usuário pode ter acesso aos arquivos em .data e docker também pode trabalhar com todo o conteúdo lá.