Docker 中的卷,可以讓容器內的數據保存在主機上的目錄中,保證在容器重啟或進入其它容器時,數據能夠被保留下來。
docker run -d --name mydb -v /host/db:/var/lib/mysql mysql
上述例子中,我們將宿主機 /host/db 目錄映射到了容器內的 /var/lib/mysql 目錄中。這樣,所有在容器內的數據都會被保存在主機上的 /host/db 目錄中,以及所有進入容器的新數據也會被寫入到這個目錄中。
docker run -it --name mywebapp --mount type=bind,source="$(pwd)",target=/app mywebapp
上面的例子中,我們使用新的 --mount 標志來將當前目錄作為主機目錄映射到容器中的 /app 目錄。
Docker 還支持更多的卷屬性,例如 -v 容器內的目錄:ro 可以將卷設為只讀,-v 容器內的目錄:z 可以將 SELinux 標簽應用到掛載的卷上。
docker run -d --name Nginx -v /etc/nginx/conf.d -v /etc/nginx/certs -v /usr/share/nginx/html docker.io/nginx:latest
上述例子中,我們可以將三個卷映射到容器內,/etc/nginx/conf.d 和 /etc/nginx/certs 是只讀的,/usr/share/nginx/html 是可讀可寫的。
總的來說,Docker 中的卷是一個非常值得使用的功能,它可以讓我們的應用程序在容器重啟后,不會丟失數據,同時也很方便地與主機共享數據。