Docker semplice host di condivisione di file <> docker

Oct 25 2020

Sono nuovo in Docker. Sto cercando di riuscire a eseguire una finestra mobile e aggiungere alcuni file. L'utente dovrebbe essere in grado di modificare questi file e lasciare che la finestra mobile faccia la sua magia. Le prestazioni non sono importanti, ma la semplicità. Dovrebbe essere possibile eseguire la finestra mobile senza ulteriori argomenti, solo "-it". Ho provato a usare i volumi, ma ...

docker-compose.yml:

version: '3.4'

volumes:
  data:
    name: templatevolume

services:
  template:
    image: template
    volumes:
        - data:/usr/template/:rw
    build:
        context: .
        dockerfile: ./Dockerfile

... il volume verrà creato, ma non assegnato al Docker. Esiste un modo migliore? Devo assegnare il volume al Docker all'interno del comando run? Per favore consiglio.

Dockerfile:

FROM fedora:latest

LABEL Name=template Version=0.0.1

...

è un lungo Dockerfile, ma qui non faccio nulla con i volumi e niente di speciale, installo solo i pacchetti.

Risposte

IvanAvdonin Oct 26 2020 at 00:40

Puoi usare bind mounts. Monteranno una directory della tua macchina fisica nel tuo container Docker.

Per tale volume è necessario specificare l' origine del montaggio, che è il percorso del file o della directory sull'host del daemon Docker (il computer) e la destinazione , che è il percorso in cui il file o la directory è montato nel contenitore (all'interno del contenitore).

- "source:target"

Non è necessario creare alcun volume docker.

Creiamo una directory nascosta .data nella directory del tuo file yml docker-compose

$ mkdir .data

Ora il file docker-compose:

version: '3.4'

services:
  template:
    image: template
    volumes:
        - data:/usr/template/:rw
        - "./.data:/usr/template/"
    build:
        context: .
        dockerfile: ./Dockerfile

Questo è tutto. Un utente può avere accesso ai file in .data e docker può anche lavorare con tutto il contenuto lì.