Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:docker:docker_volumes_by_examples [2026/05/08 11:34] peter_rossbach2 angelegt |
admin_grundlagen:docker:docker_volumes_by_examples [2026/05/08 11:56] (aktuell) peter_rossbach2 [NFS] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ===== Docker volumes by examples ===== | ===== Docker volumes by examples ===== | ||
| + | |||
| + | ==== Start mysql with docker volumes ==== | ||
| + | |||
| + | <code bash> | ||
| + | # hostpath bind mount | ||
| + | docker run --name mysql-db \ | ||
| + | -v $(pwd)/datadir:/var/lib/mysql | ||
| + | -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.4.9 | ||
| + | |||
| + | docker stop mysql.db | ||
| + | docker rm mysql-db | ||
| + | |||
| + | # or docker managed volume /var/lib/docker/volumes | ||
| + | docker volume create mysql-data | ||
| + | docker run --name mysql-db \ | ||
| + | -v mysql-data:/var/lib/mysql | ||
| + | -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.4.9 | ||
| + | |||
| + | </code> | ||
| ==== NFS ==== | ==== NFS ==== | ||
| + | |||
| + | - https://oneuptime.com/blog/post/2026-01-30-docker-nfs-volumes/view | ||
| + | - https://docs.docker.com/engine/storage/volumes/ | ||
| Install NFS kernel server | Install NFS kernel server | ||
| Zeile 30: | Zeile 52: | ||
| sudo exportfs -v | sudo exportfs -v | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | Create docker volume with a NFS Share: | ||
| + | |||
| + | <code bash> | ||
| + | docker volume create \ | ||
| + | --driver local \ | ||
| + | --opt type=nfs \ | ||
| + | --opt o=addr=192.168.1.100,rw,nfsvers=4.1 \ | ||
| + | --opt device=:/exports/shared \ | ||
| + | shared-data | ||
| + | </code> | ||
| + | |||
| + | |||
| + | Use volume inside docker-compose service: | ||
| + | |||
| + | <code bash> | ||
| + | mkdir -p web | ||
| + | cd web | ||
| + | cat >docker-compose.yml <<EOF | ||
| + | services: | ||
| + | app: | ||
| + | image: nginx:alphine | ||
| + | volumes: | ||
| + | - shared-data:/usr/share/nginx/html | ||
| + | deploy: | ||
| + | replicas: 3 | ||
| + | |||
| + | processor: | ||
| + | image: python:3.11-slim | ||
| + | volumes: | ||
| + | - shared-data:/data | ||
| + | command: python -c "while True: pass" | ||
| + | |||
| + | volumes: | ||
| + | shared-data: | ||
| + | driver: local | ||
| + | driver_opts: | ||
| + | type: nfs | ||
| + | o: addr=192.168.1.100,rw,nfsvers=4.1,soft,timeo=300 | ||
| + | device: ":/exports/shared" | ||
| + | EOF | ||
| + | docker compose uo -d | ||
| + | # access service with curlimages/curl many times | ||
| + | docker run --rm --network default-web curlimages/curl curl -s app | ||
| + | ... | ||
| + | # check logs | ||
| + | |||
| + | # down | ||
| + | docker compose down | ||
| + | </code> | ||
| + | |||
| + | |||
| + | Use nfs share with docker --mount directly: | ||
| + | |||
| + | <code bash> | ||
| + | docker run -d \ | ||
| + | --name web \ | ||
| + | --mount type=volume,volume-driver=local,\ | ||
| + | volume-opt=type=nfs,\ | ||
| + | volume-opt=o=addr=192.168.1.100,\ | ||
| + | volume-opt=device=:/exports/shared,\ | ||
| + | dst=/usr/share/nginx/html \ | ||
| + | nginx:alpine | ||
| + | </code> | ||
| + | |||