Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:docker:docker_volumes_by_examples [2026/05/08 11:42] peter_rossbach2 [NFS] |
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 >htdocs/index.html <<EOF | ||
| + | <!doctype html> | ||
| + | <html lang="en"> | ||
| + | <head> | ||
| + | <meta charset="utf-8"> | ||
| + | <title>Docker Local Path Nginx</title> | ||
| + | </head> | ||
| + | <body> | ||
| + | <h2>Hello from Nginx container of `hostname`</h2> | ||
| + | </body> | ||
| + | </html> | ||
| + | EOF | ||
| + | </code> | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | docker run -d --name nginx-local \ | ||
| + | -v $(pwd)/htdocs:/usr/share/nginx/html nginx | ||
| + | |||
| + | IPADDRESS=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx-local) | ||
| + | # Alternative with jq | ||
| + | # docker inspect nginx-local| jq -r '.[0].NetworkSettings.Networks.bridge.IPAddress' | ||
| + | curl $IPADDRESS | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ==== Start nginx with docker volumes ==== | ||
| + | |||
| + | Prepare docker managed volume: | ||
| + | |||
| + | <code bash> | ||
| + | docker volume create htdocs-volume | ||
| + | |||
| + | docker container run \ | ||
| + | -v $(pwd)/htdocs:/htdocs \ | ||
| + | -v htdocs-volume:/htdocs1 \ | ||
| + | -ti --rm alpine /bin/sh | ||
| + | cp htdocs/index.html htdocs1 | ||
| + | exit | ||
| + | |||
| + | </code> | ||
| + | |||
| + | Use docker managed volume: | ||
| + | |||
| + | <code bash> | ||
| + | docker run -d --name web-server \ | ||
| + | -v htdocs-volume:/usr/share/nginx/html nginx | ||
| + | |||
| + | # check content | ||
| + | docker exec web-server ls /usr/share/nginx/html | ||
| + | docker run --rm -ti --volumes-from web-server alpine /bin/sh | ||
| + | ls /usr/share/nginx/html | ||
| + | exit | ||
| + | |||
| + | </code> | ||
| + | |||
| + | Inspect volumes: | ||
| + | |||
| + | <code bash> | ||
| + | docker volume ls | ||
| + | docker volume inspect htdocs-volume | ||
| + | |||
| + | #docker volume rm htdocs-volume | ||
| + | </code> | ||
| + | |||
| + | ==== Start with mount options and publish nginx ==== | ||
| + | |||
| + | <code bash> | ||
| + | docker run \ | ||
| + | --mount type=bind,src=$(pwd)/htdocs,dst=/usr/share/nginx/html,readonly \ | ||
| + | -p 8080:80 \ | ||
| + | nginx-public | ||
| + | </code> | ||
| + | |||
| + | ==== Start local mysql ==== | ||
| + | |||
| + | <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 | ||
| + | |||
| + | # Access DB | ||
| + | |||
| + | # Stop db | ||
| + | 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 | | ||
| + | |||
| + | - 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 32: | Zeile 137: | ||
| - | Mount NFS Share: | + | Create docker volume with a NFS Share: |
| <code bash> | <code bash> | ||
| Zeile 44: | Zeile 149: | ||
| - | </code bash> | + | Use volume inside docker-compose service: |
| + | |||
| + | <code bash> | ||
| mkdir -p web | mkdir -p web | ||
| cd web | cd web | ||
| Zeile 81: | Zeile 188: | ||
| - | With docker --mount: | + | Use nfs share with docker --mount directly: |
| <code bash> | <code bash> | ||
| Zeile 93: | Zeile 200: | ||
| nginx:alpine | nginx:alpine | ||
| </code> | </code> | ||
| + | |||
| + | ++++ | ||