Host de compartilhamento simples de arquivo Docker <> docker

Oct 25 2020

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

IvanAvdonin Oct 26 2020 at 00:40

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á.