Docker数据管理

Posted skyflask

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker数据管理相关的知识,希望对你有一定的参考价值。

一、挂载类型

1、volumes

Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。

使用场景:将容器中的数据持久化到宿主机,比如容器是mysql,容器重启后就没数据了,此时需要保存到宿主机上。

2、bind mounts

将宿主机上的任意位置的文件或者目录挂载到容器中。

使用场景:容器使用一些宿主机上的文件或目录。比如zabbix agent 他需要采集宿主机上的proc目录对其进行监控。

3、tmpfs

挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久化到任何位置,可以使用tmpfs,同时避免写入容器可写层,以提高性能。

使用较少。

技术分享图片

 

 

 二、volumes

1、创建和查看volume

技术分享图片

 

 2、使用vloume

技术分享图片

 注意:也可以使用-v的方式,是老的方式。

docker run -d --name lnmp_web03 -p8889:80 -v nginx_root:/usr/share/nginx/html nginx

 3、验证

修改主页

技术分享图片

 查看主页

技术分享图片

直接修改/var/lib/docker/volumes/nginx_root/_data数据,就是修改的容器的数据,当容器挂掉后,我们重新再启动一个新的容器即可。这就是volume的好处啦。

 

三、bind mounts

bind方式和volume不同之处是:bind方式是直接将宿主机上的某个目录作为源。此目录必须存在,不然会报错。

 1、bind方式创建容器

 技术分享图片

 注意:

1、如果源文件/目录没有存在,不会自动创建,会抛出错误。

2、如果挂载目标在容器中非空目录,则改目录现有内容将被隐藏。

3、使用另外一种方式使用bind

 docker run -d --name lnmp_ggg -p8889:80 -v /mnt:/usr/share/nginx/html nginx

 2、查看容器

容器里面本来是有内容的,挂载源文件后,会被覆盖,现有内容隐藏起来。

技术分享图片

 

 3、编写主页

技术分享图片

 

 4、验证

技术分享图片

5、查看源目录 

技术分享图片

 

四、总结

1、volume特点

  • 多个运行容器之间共享数据。
  • 当容器停止或被移除时,该卷依然存在。
  • 多个容器可以同时挂载相同的卷。
  • 当明确删除卷时,卷才会被删除。
  • 将容器的数据存储在远程主机或其他存储上。
  • 将数据从一台dokcer迁移到另外一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes)

2、Bind Mounts特点

  • 从主机共享配置文件到容器,默认情况下,挂载主机resolv.conf到每个容器,提供DNS解析。
  • 在Docker主机上的开发环境和容器之间共享源代码。例如,可以将Maven target目录挂载到容器中,每次在Docker上构建Maven项目时,容器都可以访问构建最新的项目包。
  • 当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时。

以上是关于Docker数据管理的主要内容,如果未能解决你的问题,请参考以下文章

docker——docker数据管理

Docker数据管理与网络通信

Docker学习第三天(Docker数据卷管理)

Docker镜像创建数据管理与网络通信

Docker------Docker数据管理与Dockerfile镜像创建

Docker------Docker数据管理与Dockerfile镜像创建