Docker数据管理
Docker数据卷
数据卷:容器中的部分数据可以通过镜像的形式保存下来,其他数据一旦容器被删除,数据也就丢失了,数据卷技术是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用、对数据卷的修改会立马生效,对数据卷的更新不会影响镜像,数据卷默认会一直存在,即使容器被删除。
数据卷的创建及查看:
docker volume create 数据卷名
docker volume ls
查看数据卷的信息
docker volume inspect my-volume
启动一个挂载数据卷的容器
基于centos镜像创建了一个my-centos的容器,后台运行,并加载了数据卷到容器的/home目录。
查看数据卷的具体信息
docker inspect my-volume查看容器的具体信息
数据卷的删除
docker volume rm 数据卷名
Docker挂载主机目录
docker run -v [主机目录]:[容器目录]:[目录权限] 镜像
目录权限:
ro:只读
rw:可读可写
查看容器信息中发现挂载成功
在容器中新建文件看看主机目录是否存在?
在主机挂载目录下新建文件看看容器中是否存在?
过程中遇到的问题
我使用docker run -d --name my-centos -v D:\docker-volume:/home centos命令后台运行my-centos容器时,再使用docker attach my-centos进行容器中新建文件来检查数据卷挂载主机目录是否能够做到数据同步,发现进不了容器,并且使用docker ps命令发现正在运行的容器为空。为什么呢?-d不就是后台运行吗?
解答:看了相关资料才知道,容器的后台运行使用-d的前提是要有前台进程。
解决方案1:
解决方案2:以交互模式进入容器,并且使用ctrl+p+q退出容器
具名挂载,匿名挂载
具名挂载:
docker run -v 卷名:主机目录:容器目录 镜像
匿名挂载:
docker run -v 主机目录:容器目录 镜像
注:在挂载主机目录时主机目录是可以省略不写的,就会使用默认的路径
疑问
在win10平台主机挂载目录不写的话,默认的挂载目录好像是linux平台下的目录,在win10平台下访问不到。是不是在win10下主机挂载目录不能省略?或者需要做其他的配置?
容器间的数据共享
首先新建容器,并指定数据卷目录
使用–volumes-from选项建立容器容器2和容器1的数据卷挂载关系
最后测试在容器2的volume01中新建test.json文件,同时在容器1的volume01中也出现了这个文件。
参考文献
书籍:《Docker-从入门到实践》
链接: 狂神说Java-Docker教程