admin_grundlagen:docker:docker_volumes_by_examples
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| admin_grundlagen:docker:docker_volumes_by_examples [2026/05/08 11:34] – angelegt peter_rossbach2 | admin_grundlagen:docker:docker_volumes_by_examples [2026/05/29 14:01] (aktuell) – peter_rossbach2 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ===== Docker volumes by examples ===== | ===== Docker volumes by examples ===== | ||
| - | ==== NFS ==== | + | ==== Start nginx with local path ==== |
| + | |||
| + | Create Website content: | ||
| + | |||
| + | <code bash> | ||
| + | mkdir -p htdocs | ||
| + | cat > | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | docker run -d --name nginx-local \ | ||
| + | -v $(pwd)/ | ||
| + | |||
| + | IPADDRESS=$(docker inspect -f ' | ||
| + | # Alternative with jq | ||
| + | # docker inspect nginx-local| jq -r ' | ||
| + | curl $IPADDRESS | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Start nginx with docker volumes ==== | ||
| + | |||
| + | Prepare docker managed volume: | ||
| + | |||
| + | <code bash> | ||
| + | docker volume create htdocs-volume | ||
| + | |||
| + | docker container run \ | ||
| + | -v $(pwd)/ | ||
| + | -v htdocs-volume:/ | ||
| + | -ti --rm alpine /bin/sh | ||
| + | cp htdocs/ | ||
| + | exit | ||
| + | |||
| + | </ | ||
| + | |||
| + | Use docker managed volume: | ||
| + | |||
| + | <code bash> | ||
| + | docker run -d --name web-server \ | ||
| + | -v htdocs-volume:/ | ||
| + | |||
| + | # check content | ||
| + | docker exec web-server ls / | ||
| + | docker run --rm -ti --volumes-from web-server alpine /bin/sh | ||
| + | ls / | ||
| + | exit | ||
| + | |||
| + | </ | ||
| + | |||
| + | Inspect volumes: | ||
| + | |||
| + | <code bash> | ||
| + | docker volume ls | ||
| + | docker volume inspect htdocs-volume | ||
| + | |||
| + | #docker volume rm htdocs-volume | ||
| + | </ | ||
| + | |||
| + | ==== Start with mount options and publish nginx ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker run \ | ||
| + | --mount type=bind, | ||
| + | -p 8080:80 \ | ||
| + | nginx-public | ||
| + | </ | ||
| + | |||
| + | ==== Start local mysql ==== | ||
| + | |||
| + | <code bash> | ||
| + | # hostpath bind mount | ||
| + | docker run --name mysql-db \ | ||
| + | -v $(pwd)/ | ||
| + | -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql: | ||
| + | |||
| + | # Access DB | ||
| + | |||
| + | # Stop db | ||
| + | docker stop mysql.db | ||
| + | docker rm mysql-db | ||
| + | |||
| + | # or docker managed volume / | ||
| + | docker volume create mysql-data | ||
| + | docker run --name mysql-db \ | ||
| + | -v mysql-data:/ | ||
| + | -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql: | ||
| + | |||
| + | </ | ||
| + | |||
| + | ++++ NFS | | ||
| + | |||
| + | - https:// | ||
| + | - https:// | ||
| Install NFS kernel server | Install NFS kernel server | ||
| Zeile 30: | Zeile 135: | ||
| sudo exportfs -v | sudo exportfs -v | ||
| </ | </ | ||
| + | |||
| + | |||
| + | Create docker volume with a NFS Share: | ||
| + | |||
| + | <code bash> | ||
| + | docker volume create \ | ||
| + | --driver local \ | ||
| + | --opt type=nfs \ | ||
| + | --opt o=addr=192.168.1.100, | ||
| + | --opt device=:/ | ||
| + | shared-data | ||
| + | </ | ||
| + | |||
| + | |||
| + | Use volume inside docker-compose service: | ||
| + | |||
| + | <code bash> | ||
| + | mkdir -p web | ||
| + | cd web | ||
| + | cat > | ||
| + | services: | ||
| + | app: | ||
| + | image: nginx: | ||
| + | volumes: | ||
| + | - shared-data:/ | ||
| + | deploy: | ||
| + | replicas: 3 | ||
| + | |||
| + | processor: | ||
| + | image: python: | ||
| + | volumes: | ||
| + | - shared-data:/ | ||
| + | command: python -c "while True: pass" | ||
| + | |||
| + | volumes: | ||
| + | shared-data: | ||
| + | driver: local | ||
| + | driver_opts: | ||
| + | type: nfs | ||
| + | o: addr=192.168.1.100, | ||
| + | device: ":/ | ||
| + | EOF | ||
| + | docker compose uo -d | ||
| + | # access service with curlimages/ | ||
| + | docker run --rm --network default-web curlimages/ | ||
| + | ... | ||
| + | # check logs | ||
| + | |||
| + | # down | ||
| + | docker compose down | ||
| + | </ | ||
| + | |||
| + | |||
| + | Use nfs share with docker --mount directly: | ||
| + | |||
| + | <code bash> | ||
| + | docker run -d \ | ||
| + | --name web \ | ||
| + | --mount type=volume, | ||
| + | volume-opt=type=nfs, | ||
| + | volume-opt=o=addr=192.168.1.100, | ||
| + | volume-opt=device=:/ | ||
| + | dst=/ | ||
| + | nginx: | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
admin_grundlagen/docker/docker_volumes_by_examples.1778240091.txt.gz · Zuletzt geändert: 2026/05/08 11:34 von peter_rossbach2
