Docker持久存储与数据共享架构图
有些容器会自动创建一些数据,防止容器丢失时数据丢失,保证数据安全。例如:一个数据库容器,一个数据表中的一个表产生数据。如果我删除容器,数据就会丢失。为了使信息不会消失,Volume存在。
数据 Volume 的结构图
Docker 的持久数据解决方案
- Volume 的本地文件系统。在执行 Docker 构建或 Docker 运行时,可以使用 -v 参数将主机目录用作容器卷。这部分功能是本地文件系统的根卷管理。
- 基于Pugin的Volume支持NAS、AWS等第三方存储解决方案
Volume的类型
- 托管数据Volume自动创建扩展坞。
- Volume被绑住了。用户可以指定具体的安装位置。
数据持久化Volume
我们以官方镜像的mysql dockerfile为例。 docker 文件指定了要通过卷备份到当前容器的文件的路径,但没有指定它在主机上的存储位置。
volume:将容器中的文件挂载到本地主机硬盘
当我们使用docker run
命令启动mysql镜像卷容器时。默认情况下。至于位置和名称,可以通过以下命令查看
#查看所有volume
docker volume ls
#删除指定volume
docker volume rm [volume name]
#查看volume详细
docker volume inspect [volume name]
复制代码
此时我们删除容器,发现卷数据还在并保留着。
这个时候我们就感觉这个数据卷的名字很长,很难理解。我们可以通过以下命令指定创建的卷的名称 -v
docker run -d -v mysql:/var/lib/mysql --name mysql mysql5.7
- - :第一个参数是卷的名称, :下一个参数是要备份的文件目录(容器)。我们将使用这个名为 mysql 的卷作为新的容器数据卷并替换它。
docker run -d -v mysql:/var/lib/mysql --name mysql2 mysql5.7
进入mysql2容器,mysql root进入数据库,找到当前数据库。之前删除的Säilö数据库信息是一样的。
数据持久化绑定 Docking
与上面的 Data Volume 不同的是,绑定 Docking 只能通过 docker run -v
启动,不能通过 dockerfile 启动。
使用容器时,指定本地文件目录与容器内文件目录的对应关系。这允许同步文件信息。无论哪一方有变化,对方都会同步内容
docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name nginx nginx
复制代码
当前-v
:前面参数是本地文件路径,:下面是Docker文件目录(容器)
需要注意的是,使用bond join方式映射数据卷时,第一次docker run -v
运行时,如果本地文件夹中没有内容机器上且docker容器的文件夹中有内容,则本地替换docker容器的文件夹,即容器原来的内容。也没有内容。
作者:蒋老石
链接:https://juejin.im/post/5b6d4439f265da0f800e0d5a
来源:掘金版权归作者所有如需商业转载请联系作者授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。