Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Persistenz mit Volumes
Beispiel: Kartenansicht für GPX Track Dateien
git installieren:
apt install -y git
Quellcode laden:
git clone https://github.com/RalfNieuwenhuizen/routes-explorer.git cd routes-explorer/
Dockerfile: Version hinzufügen
- Dockerfile
… LABEL version="0.0.1"
Image bauen:
docker build -t='ingo/routes-explorer:0.0.1' .
Docker CLI
ohne Volume
Container starten:
docker container run -d -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.1
GPX-Tracks aussuchen und herunterladen: https://wildnis-wandern.de/gpx-downloads/
http://localhost:5000 → GPX-Dateien hochladen
Container updaten:
- Dockerfile
… LABEL version="0.0.2"
docker build -t='ingo/routes-explorer:0.0.2' .
docker container rm -f routes-explorer docker container run -d -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.2
http://localhost:5000 → GPX-Dateien sind weg
anonymes Volume
Container löschen:
docker container rm -f routes-explorer
Container starten:
docker container run -d --restart=always -v /routes -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.1
http://localhost:5000 → GPX-Dateien hochladen
docker inspect routes-explorer --format json | jq '.[0].Mounts'
→ die hochgeladenen GPX-Dateien liegen in „Source“
Container updaten:
docker container rm -f routes-explorer docker container run -d --restart=always -v /routes -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.2
http://localhost:5000 → GPX-Dateien sind nicht sichtbar: sie liegen noch in dem alten anonymen Volume.
docker volume ls
relativer Pfad
Container löschen:
docker container rm -f routes-explorer
Daten im Verzeichnis routes speichern:
mkdir routes
docker container run -d --restart=always -v ./routes:/routes -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.1
http://localhost:5000 → GPX-Dateien hochladen
ls routes/
→ zeigt die hochgeladenen GPX-Dateien
Container updaten:
docker container rm -f routes-explorer docker container run -d --restart=always -v ./routes:/routes -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.2
http://localhost:5000 → GPX-Dateien sind noch da
docker inspect routes-explorer --format json | jq '.[0].Mounts'
→ relativer Pfad wird von Docker als absoluter Pfad verarbeitet.
Sicherheit
container exec -it routes-explorer bash cp /usr/bin/cat /routes chmod u+sx,go+x /routes/cat ls -l /routes/cat exit ls -l ./routes/cat
benanntes Volume
Container löschen:
docker container rm -f routes-explorer
Daten im Volume routes speichern:
docker volume create routes docker container run -d --restart=always -v routes:/routes -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.1
http://localhost:5000 → GPX-Dateien hochladen
docker inspect routes-explorer --format json | jq '.[0].Mounts.[0].Source'
→ die hochgeladenen GPX-Dateien liegen in diesem Verzeichnis
Container updaten:
docker container rm -f routes-explorer docker container run -d --restart=always -v routes:/routes -p 5000:5000 --name routes-explorer ingo/routes-explorer:0.0.2
http://localhost:5000 → GPX-Dateien sind noch da
Docker Compose
Docker CLI Container löschen:
docker container rm -f routes-explorer
Compose Verzeichnis anlegen:
mkdir -p /srv/docker/routes-explorer cd /srv/docker/routes-explorer
ohne Volume
- docker-compose.yml
services: routes-explorer: image: ingo/routes-explorer:0.0.1 ports: - "5000:5000"
Container starten:
docker compose up -d
http://localhost:5000 → GPX-Dateien hochladen
Container updaten:
- docker-compose.yml
… image: ingo/routes-explorer:0.0.2 …
docker compose up -d
http://localhost:5000 → GPX-Dateien sind weg
anonymes Volume
Container löschen:
docker compose down
Container starten:
- docker-compose.yml
… image: ingo/routes-explorer:0.0.1 volumes: - /routes
Container starten:
docker compose up -d
http://localhost:5000 → GPX-Dateien hochladen
docker inspect routes-explorer-routes-explorer-1 --format json | jq '.[0].Mounts'
→ die hochgeladenen GPX-Dateien liegen in „Source“
Container updaten:
- docker-compose.yml
… image: ingo/routes-explorer:0.0.2 …
docker compose up -d
http://localhost:5000
→ GPX-Dateien sind sind noch da
docker volume ls
relativer Pfad
Container löschen:
docker compose down
Daten im Verzeichnis routes speichern:
mkdir routes
- docker-compose.yml
… image: ingo/routes-explorer:0.0.1 volumes: - ./routes:/routes restart: unless-stopped
Container starten:
docker compose up -d
http://localhost:5000 → GPX-Dateien hochladen
ls routes/
→ zeigt die hochgeladenen GPX-Dateien
Container updaten:
- docker-compose.yml
… image: ingo/routes-explorer:0.0.2 …
docker compose up -d
http://localhost:5000 → GPX-Dateien sind noch da
→ relativer Pfad wird von Docker als absoluter Pfad verarbeitet.
benanntes Volume
Container löschen:
docker compose down
- docker-compose.yml
… image: ingo/routes-explorer:0.0.1 volumes: - routes:/routes restart: unless-stopped … volumes: routes:
Container starten:
docker compose up -d
http://localhost:5000 → GPX-Dateien hochladen
docker inspect routes-explorer-routes-explorer-1 --format json | jq '.[0].Mounts.[0].Source'
→ die hochgeladenen GPX-Dateien liegen in diesem Verzeichnis
Container updaten:
- docker-compose.yml
… image: ingo/routes-explorer:0.0.2 …
docker compose up -d
http://localhost:5000 → GPX-Dateien sind noch da
