Mapowanie wolumenu hosta na kontener – dostęp z poziomu kontenera i hosta
# docker run -v /host_dir/:kontener_dir # docker run -it -v /home/john/wwwdir/:/data ubuntu # docker volume ls - sprawdzenie nazwy
Bez mapowania – doker powiąże dynamicznie z wybranym katalogiem hosta – możliwość przenoszenia między hostami
# docker run -it -v /data2 ubuntu
Mapowanie pojedyńczych plików. Można mapować wiele wolumenów i plików dla jednego kontenera
docker run -it -v ~/.bash_history:/root/.bash_history ubuntu
Obraz dockera wyłącznie dla danych – współużytkowanie między kontenerami
# docker run --volumes-from kontener_źródłowy <obraz> // np. dodajemy ręcznie wolumen do kontenera źródłowego myUbuntu # docker run -itd --name myUbuntu -v /data ubuntu // do kontenera myBusyBox dołączamy te same wolumeny co w myUbuntu # docker run -it --name myBusyBox --volumes-from myUbuntu busybox --wolumes-from może być użyte wiele razy
Utworzenie wolumenu z nazwą – takie wolumeny służą tylko do posiadania danych. Najepiej wybrać obraz taki sam jak aplikacji, która go dołączy (mniej zajmie miejsca). Obraz i tak nie będzie uruchamiany – tylko system plików.
# docker create -v ~/nginx/html:/usr/share/html --name myWebData nginx # docker run --name docker-nginx -p 80:80 -d --volumes-from myWebData nginx
Utworzenie wolumenu przed uruchomieniem kontenera
# docker volume create --name data # docker volume ls # docker run -it -v data:/data ubuntu
Sprawdzenie wolumenów – opcja -f filtrowania
# docker volume ls -f dangling=true // wolumeny nie używane przez żaden kontener # docker volume ls -f driver=local // korzystające z danego sterownika (local) # docker volume ls -f name=da // dopasowanie do nazwy tu 'da'
# docker volume inspect <nazwa wolumenu> - pokaże np. powiązanie z katalogiem hosta
Usuwanie wolumeny – poprzez nazwę kontenera
# docker rm -v <nazwa_kontenera> # docker rm -v myUbuntu
Usuwanie odwołując się do wolumenu
# docker volume rm <nazwa_wolumenu> # docker volume ls # docker volume rm data // Usuwa wszystkie wolumeny do których nie odwołuje się żaden kontener # docker volume rm $(docker volume ls -qf dangling=true)