Docker入门(7):容器数据卷
为什么需要容器数据卷
试想一下如果将数据都存在容器里,那么将容器删除里面的数据都会丢失
由此我们需要实现数据持久化
容器数据卷的作用就是将容器的目录挂载到Linux本地,这样就实现了数据的共享
使用数据卷
方法一:使用命令-v直接挂载
docker run -it -v 主机目录:容器内目录 ...
方法二:使用Dockerfile挂载
深入了解Dockerfile请看这里
Dockerfile就是来构建容器镜像文件的命令脚本
Dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,Docker能够读取Dockerfile的指定进行自动构建容器,基于Dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。
Dockerfile举例
- 编写一个名为dockerfile_1的文件
FROM 镜像[:版本] # 根据什么镜像创建
volume ["volume_1","volume_2"] # 挂载的目录
CMD /bin/bash # 什么命令方式进入
- 使用dockerfile_1创建镜像
docker bulid -f dockerfile_1的路径 -t 镜像名称:版本
- 运行自己创建的镜像
docker run ......
数据卷管理
volume命令
docker volume COMMAND
create # 创建卷
inspect # 显示一个或多个卷的详细信息
ls # 列表出卷
prune # 移除所有未使用的本地卷
rm # 移除一个或多个卷
拓展
docker run -it -v 主机目录:容器内目录 ... # 指定路径挂载
docker run -it -v 卷的名称:容器内目录 ... # 具名挂载
docker run -it -v 容器内目录 ... # 匿名挂载
# 在容器内目录后面可以添加读写权限
# :ro 只读readonly,一旦设置仅可从宿主机更改,容器内部不可更改
# :rw 可读可写readwrite
通过数据卷共享数据
我们今后极有可能需要两个容器之间共享数据
共享挂载目录
docker run -it --name 容器名 --volumes-from 被共享的容器名 镜像名:版本
若被共享的容器被删除,新创建的容器数据也不会丢失。
浙公网安备 33010602011771号