默认容器的数据的读写发生在容器的存储层,当容器被删除时其上的数据将会丢失。所以我们应该尽量保证容器存储层不发生写操作,为了实现数据的持久化存储我们需要选择一种方案来保存数据,当前有以下几种方式:
- Volumes
- Bind mounts
- tmpfs mounts
下图展示了这三种技术:
Volumes
Volumes(数据卷)是一个可供一个或多个容器使用的位于宿主机上特殊目录,它拥有以下特性:
- 数据卷可以在容器间共享和重用
- 对数据卷的写入操作,不会对镜像有任何影响
- 数据卷默认会一直存在,即使容器被删除
使用数据卷的目的是持久化容器中的数据,以在容器间共享或者防止数据丢失(写入容器存储层的数据会丢失)。
使用数据卷的步骤一般分为两步:
- 创建一个数据卷
- 使用-v或--mount参数将数据卷挂载容器指定目录中,这样所有该容器针对该指定目录的写操作都会保存在宿主机上的Volume中。
Volume管理
创建一个Volume:
$ docker volume create my-vol
查看Volumes:
$ docker volume ls local my-vol
$ docker volume inspect my-vol [ { "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/my-vol/_data", "Name": "my-vol", "Options": {}, "Scope": "local" } ]
我么可以看到创建的Volume my-vol保存在目录/var/lib/docker/volumes/
下,以后所有针对该Volume的写数据都会保存中目录/var/lib/docker/volumes/my-vol/_data
下。
删除一个Volume:
$ docker volume rm my-vol
或者删除所有未使用的Volumes:
docker volume prune
挂载数据卷到容器目录
创建了一个Volume之后,我们可以在运行容器时通过指定-v或--mount参数来使用该Volume:
使用--mount
参数:
$ docker run -d --name=nginxtest --mount source=nginx-vol,destination=/usr/share/nginx/html nginx:latest
source指定volume,destination指定容器内的文件或文件夹。
或者使用-v参数:
$ docker run -d --name=nginxtest -v nginx-vol:/usr/share/nginx/html nginx:latest
挂载成功后,容器从/usr/share/nginx/html目录下读取或写入数据,实际上都是从宿主机的nginx-vol数据卷中读取或写入数据。因此Volumes或Bind mounts也可以看作是容器和宿主机共享文件的一种方式。
-v参数使用冒号分割source和destination,冒号前半部分是source,后半部分是destination。
如果你挂载一个还不存在的数据卷,Docker会自动创建它。(因此创建数据卷那一步非必需)
如果容器中的待挂载的目录不是一个空目录,那么该目录下的文件会被复制到数据卷中。(Bind mounts下,宿主机上的目录总会覆盖容器中的待挂载目录)
-v参数和--mount参数总的来说功能几乎相同,唯一的区别是在运行一个service时只能够--mount参数来挂载数据卷。
使用只读数据卷
有些情况下,我们希望某个数据卷对某个容器来说是只读的,可以通过添加readonly选项来实现:
$ docker run -d --name=nginxtest --mount source=nginx-vol,destination=/usr/share/nginx/html,readonly nginx:latest
或者使用-v参数:
$ docker run -d --name=nginxtest -v nginx-vol:/usr/share/nginx/html:ro nginx:latest
Volumes使用场景
请参考这篇文章:Docker数据存储总结
参考文章
https://docs.docker.com/storage/volumes/#share-data-among-machines
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 群星2013-青春缤纷辑压箱宝大公开3CD2[新加坡限量版][WAV整轨]
- 林育群.2013-BalladShow(日本版)【环球】【WAV+CUE】
- 陈加洛.1992-痛到感觉不到【宝丽金】【WAV+CUE】
- 群星.2023-宿命之敌电视剧原声带【韶愔音乐】【FLAC分轨】
- 東京事変-大発見[FLAC+CUE]
- 椎名林檎-三文ゴシップ[FLAC+CUE]
- 2024年08月04日
- 裘德《裘德「最后的水族馆」演唱会LIVE》[320K/MP3][228.89MB]
- 裘德《裘德「最后的水族馆」演唱会LIVE》[24bit 48kHz][FLAC/分轨][2.08G]
- 基因三重奏《如果你什么都不说 音乐会现场录音》[320K/MP3][145.37MB]
- 孟庭苇.1996-月亮说话(2020环球24KGOLD限量版)【上华】【WAV+CUE】
- 群星.1997-新艺宝优质音响系列·国语精选监听版【新艺宝】【WAV+CUE】
- 阿桑.2005-寂寞在唱歌(星外星引进版)【华研国际】【WAV+CUE】
- 基因三重奏《如果你什么都不说 音乐会现场录音》[FLAC/分轨][287.43MB]
- 蔡题谦《我爱你,却依然要看你走》[320K/MP3][88.65MB]