容器持久化存储
在容器中所作的操作都是保存到最顶层的,一旦容器被删除那么所有的数据都会被清空,Docker 提供一种名为 数据卷(Data Volume) 的机制来解决这个问题
在宿主机中创建一个文件夹(用于存储容器中的数据),通过以下命令将目录挂载(-v)到容器的某个目录上。一旦宿主机上的文件被修改,那么容器中的文件也会被修改,反之亦然
sh
docker run -it -v [宿主机目录]:[容器目录] ubuntu-vim在使用 -v 参数时不指定宿主主机上的目录进行挂载的话,那么就由Docker来自动创建一个目录,并且会将容器中对应路径下的内容拷贝到这个自动创建的目录中,最后挂在到容器中,同时这个数据卷就被 Docker 进行管理了,即使是删除对应的容器数据卷也不会消失
sh
# 查看被Docker管理的数据卷
docker volume ls
# 删除对应的数据卷
docker volume rm [数据卷名称]
# 查看数据卷信息
docker volume inspect [数据卷名称]容器间数据共享
第一种为让两个容器挂载同一个数据卷,实现数据共享。还有一种方式是通过创建一个容器,这个容器上挂载了主机上的文件,然后其他容器创建的时候通过 --volumes-from 指定即可
sh
# 创建一个挂载容器
docker run -it -v [宿主机目录]:[容器目录] --name=test ubuntu-vim
# 创建一个容器指定 test 容器目录
docker run -it --volumes-from test ubuntu-vim也可以通过 volume 创建一个数据卷然后再创建的时候指定一下挂载目录,两个容器的数据卷相同的情况下,也可以达到数据共享的实现
sh
docker volume create [源名称]
不好的一点就是被挂载的目录是固定的,并不能自定义。然后进行挂载
sh
docker run -it -v test:/root/test --name=t1 ubuntu-vim
docker run -it -v test:/root/test --name=t2 ubuntu-vim以上的两个容器的 /root/test 中数据会被相互共享
