Docker数据卷
数据卷可以将主机上的目录/文件映射到容器内,并具有以下一些特性:
- 数据卷可以在容器之间共享,方便容器之间共享数据
- 主机/容器内的操作文件,可以立即在容器/主机上看到相应的变化
- 数据卷与容器相互独立,解耦
创建数据卷#
$ docker volume create -d local test
# 查看数据卷详细信息
$ docker volume inspect test
[
{
"CreatedAt": "2021-10-27T22:23:43+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/test/_data",
"Name": "test",
"Options": {},
"Scope": "local"
}
]
可以看到,test创建在主机的 /var/lib/docker/volumes/test/_data
目录
使用数据卷#
# 创建容器时,docker create 和 docker run 都可以使用 -v 参数
# 使用具有名字的容器卷挂载到容器中
$ docker run -it --name ubuntu-1 -v test:/test ubuntu:18.04
# 使用指定目录挂载到容器中
$ docker run -it --name ubuntu-1 -v /test:/test ubuntu:18.04
挂载的的数据卷,在容器中的默认权限是读写,可以通过 ro
指定为只读:
$ docker docker run -it --name ubuntu-1 -v test:/test:ro ubuntu:18.04
加了 ro
之后,容器内就无法修改容器卷的文件了
数据卷容器#
如果需要在多个容器挂载共享多个数据卷,可以使用数据卷容器,数据卷容器的原理是这样的:
- 创建一个容器,用作数据卷容器,名为 data-container
- 将多个数据卷挂载到 data-container 上
- 创建业务容器 container-1,使用作数据卷容器 data-container 挂载的数据卷
- 创建业务容器 container-2,使用作数据卷容器 data-container 挂载的数据卷
- ...
这样,相当于多个业务容器的数据卷配置,都来自于数据卷容器 data-container,仅需要配置一处
# 创建数据卷容器
$ docker create -v folder1:/folder1 -v folder2:/folder2 --name data-container ubuntu:18.04
# 创建业务容器1,使用数据卷容器
$ docker run -it --name container-1 --volumes-from data-container ubuntu:18.04
# 创建业务容器2,使用数据卷容器
$ docker run -it --name container-2 --volumes-from data-container ubuntu:18.04
使用数据卷容器,不需要数据卷容器在启动状态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库