Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:docker:volumes

Persistenz mit Volumes

Beispiel: Kartenansicht für GPX Track Dateien

git installieren:

apt install -y git

RockyLinux

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

Podman

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:

Podman

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

Podman mit SELinux

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:

Podman

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

Podman

docker inspect routes-explorer --format json | jq '.[0].Mounts.[0].Source'

→ die hochgeladenen GPX-Dateien liegen in diesem Verzeichnis

Container updaten:

Podman

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

Podman

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

Podman mit SELinux

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

Podman

→ 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

Podman

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

Übersicht

Docker CLI compose
ohne Volume nicht persistent nicht persistent
anonymes Volume nicht sichtbar persistent
relativer Pfad persistent persistent
benantes Volume persistent persistent
admin_grundlagen/docker/volumes.txt · Zuletzt geändert: 2026/05/31 12:34 von ingo_wichmann