是官方比较推荐也是大型的集群比较常见的一种方式。可以理解为在自己的宿主机或者云端或者在某一个区域创建一块磁盘专门去存放容器里的数据或文件。把这个容器里边的数据或者文件还有目录等都规划好,再去启动容器。正常在老一些的版本里边首先必须要去创建 volumes,否则是没有办法创建成功的。新版本好像不写命令也可以创建成功,具体可以查询官方关于 volumes 的文档。
volumes是Docker持久化数据的最好方式。因为与容器的耦合度最低。多个容器可以同时访问一个volumes。远程主机或非本机常用这种方式。需要先创建。之后再进行使用。
创建使用:
docker volume create test1
docker run -itd -p 8800:80 -v test1:/usr/share/Nginx/html nginx:v1
删除某个卷:
docker volume rm 卷名
删除所有未使用的卷:
docker volume prune
列出所有卷:
docker volume ls
查看某个卷的信息:
docker volume inspect 卷名
将宿主机中的文件、目录 mount 到容器上。本质上是宿主机、contAIner 之间共享宿主机文件系统。这种持久化方法更导致 container 与宿主机的耦合过于紧密,所以不推荐使用。
常用于一些监控类container,通过读取宿主机固定文件中的数据实现监控;临时共享文件(如配置文件等)或源码文件。
挂载到容器:-v 或—volume
使用:
docker run -itd -p 8801:80 -v /var/log/cont/Apache1:/var/log/httpd/ apache:new2
将数据存于宿主机内存中。docker 可将用户名与密码等敏感数据保存在某个数据库中,当启动需要访问这些敏感数据的 container 或者 service 时,docker 会在宿主机上创建一个 tmpfs,然后将敏感数据从数据库读出写到 tmpfs 中,再将 tmpfs mount 到 container 中,安样能保证数据安全。当容器停止运行时,则相应的 tmpfs 也从系统中删除。
比较少用,常见用于对访问有大量读写,或安全层面考虑。
docker run -itd --name tmptest --tmpfs /root nginx:latest