Docker prosty host udostępniania plików <> docker
Jestem nowy w dockerze. Próbuję uruchomić docker i dodać kilka plików. Użytkownik powinien mieć możliwość zmiany tych plików i pozwolić dockerowi zrobić to magicznie. Wydajność nie jest ważna, ale prostota. Powinno być możliwe uruchomienie dockera bez dalszych argumentów, tylko „-it”. Próbowałem użyć woluminów, ale ...
docker-compose.yml:
version: '3.4'
volumes:
data:
name: templatevolume
services:
template:
image: template
volumes:
- data:/usr/template/:rw
build:
context: .
dockerfile: ./Dockerfile
... wolumin zostanie utworzony, ale nie zostanie przypisany do Dockera. Czy jest lepszy sposób? Czy muszę przypisać wolumin do platformy Docker w ramach polecenia uruchomienia? Proszę o poradę.
Dockerfile:
FROM fedora:latest
LABEL Name=template Version=0.0.1
...
to długi plik Dockerfile, ale nie robię tutaj nic z Volumes i nic specjalnego, tylko instaluję pakiety.
Odpowiedzi
Możesz użyć bind mountów. Zamontują katalog twojej maszyny fizycznej w twoim kontenerze docker.
W przypadku takiego woluminu należy podać źródło montowania, czyli ścieżkę do pliku lub katalogu na hoście demona Dockera (komputerze) i miejscu docelowym , czyli ścieżkę, w której plik lub katalog jest zamontowany w kontenerze (wewnątrz pojemnik).
- "source:target"
Nie musisz w ogóle tworzyć żadnych woluminów dockera.
Stwórzmy ukryty katalog .data w katalogu twojego pliku yml docker-compose
$ mkdir .data
Teraz możesz utworzyć plik docker-compose:
version: '3.4'
services:
template:
image: template
volumes:
- data:/usr/template/:rw
- "./.data:/usr/template/"
build:
context: .
dockerfile: ./Dockerfile
Otóż to. Użytkownik może mieć dostęp do plików w .data, a docker może również pracować z całą zawartością.