zl程序教程

您现在的位置是:首页 >  工具

当前栏目

docker:持久化存储

Docker存储 持久
2023-09-27 14:27:10 时间

背景

我们知道,在容器这一层是可以读写的,镜像是不能读写的。
在这里插入图片描述
比如当我们用 docker 启动一个 mysql 容器,那么读写只是发生在容器这一层,当我们把容器停掉,这些数据就会丢失,这肯定是我们不能忍受的,所以 docker 提供了持久化存储的方案:

基于本地文件系统的Volume

文件同步一份到本地
在执行 docker create 或 docker run 的时候,通过 -v 参数将主机的目录作为容器的数据卷
在这里插入图片描述
https://hub.docker.com/_/mysql?tab=description&page=1&ordering=last_updated

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:lasted
# 查看已经有的volume
sudo docker volume ls
# 查看volume细节
sudo docker volume inspect volume_id
sudo docker volume rm volume_id
# 给volume起个别名为mysql,并映射文件地址
sudo docker run -v mysql:/var/lib/mysql

1、受管理的Volume(data Volume)

由 docker 后台自动创建,主要针对容器是数据源的产生的情况,我们不想让这些文件随着容器的消失而消失

VOLUME ["/var/lib/mysql"]
sudo docker run -v mysql:/var/lib/mysql

2、绑定挂载的Volume(bind Mouting)

具体挂载位置由用户指定,也就是说在容器运行的时候指定地址映射

sudo docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web zy/nginx

这样你在容器的这个目录 /usr/share/nginx/html 里的文件,会同步到容器外的当前目录。

基于Plugin的Volume

支持第三方的存储方案,如 NAS、aws