docker数据卷

什么是数据卷?

在容器中是无法通过vi命令对一个容器中的资源做修改的,这个时候就需要通过数据卷将文件中的内容映射到宿主机,在宿主机修改的文件会更新到容器中,并且容器被删除后不会把数据卷删除,数据卷中的数据会被持久化保存下来

简单使用

您提供的命令 docker run -it -v 主机目录:容器目录 是一个 Docker 命令,用于以交互模式(-it)运行容器,并将宿主机上的一个目录挂载到容器内部的指定目录。这里是命令参数的详细解释:

  • docker run:Docker 运行容器的命令。

  • -it-i 表示以交互模式运行容器,允许您与容器的标准输入(STDIN)进行交互;-t 分配一个伪终端。

  • -v:挂载卷的参数,用于将宿主机的目录挂载到容器内部。

  • 主机目录:容器目录:指定宿主机目录和容器目录之间的映射关系,格式为 <宿主机目录>:<容器目录>

    docker run -it -v 主机目录:容器目录


举例

  • docker run:Docker 运行容器的命令。

  • -d:以分离模式运行容器,即在后台运行。

  • --name nginx:为容器指定名称 nginx

  • -p 80:80:将容器的 80 端口映射到宿主机的 80 端口,这样可以通过宿主机的 80 端口访问 Nginx 服务。

  • -v html:/usr/share/nginx/html:将宿主机上的 html 目录挂载到容器的 /usr/share/nginx/html 目录,这是 Nginx 默认的静态文件存放目录。

  • nginx:指定要运行的镜像名称,这里假设您已经有一个名为 nginx 的镜像。

    docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx


查看数据卷

复制代码
docker volume ls

​​​​​​​


查详情

复制代码
docker volume inspect html
复制代码
# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

# 2.然后查看数据卷
docker volume ls
# 结果
DRIVER    VOLUME NAME
local     29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local     html

# 3.查看数据卷详情
docker volume inspect html
# 结果
[
    {
        "CreatedAt": "2024-05-17T19:57:08+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/html/_data",
        "Name": "html",
        "Options": null,
        "Scope": "local"
    }
]

# 4.查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
# 可以看到与nginx的html目录内容一样,结果如下:
总用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html

# 5.进入该目录,并随意修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html

# 6.打开页面,查看效果

# 7.进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化
docker exec -it nginx bash

常用命令

命令 说明 文档地址
docker volume create 创建数据卷 docker volume create
docker volume ls 查看所有数据卷 docs.docker.com
docker volume rm 删除指定数据卷 docs.docker.com
docker volume inspect 查看某个数据卷的详情 docs.docker.com
docker volume prune 清除数据卷 docker volume prune
相关推荐
WL_Aurora1 分钟前
Java字符输入全攻略
java·开发语言
Cat_Rocky5 分钟前
K8S-HPA水平扩缩容
docker·容器·kubernetes
Hello.Reader18 分钟前
算法基础(十三)——随机算法为什么有时主动引入随机性
java·数据库·算法
likerhood22 分钟前
ConcurrentHashMap底层数据结构和面试常见问题
java·数据结构·面试·hashmap
云烟成雨TD32 分钟前
Spring AI Alibaba 1.x 系列【52】Interrupts 中断机制:案例演示
java·人工智能·spring
老鱼说AI37 分钟前
现代 LangChain 开发指南:从 LCEL 原理到企业级 RAG 与 Agent 实战
java·开发语言·人工智能·深度学习·神经网络·算法·机器学习
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【51】Graph 整体运行全流程
java·人工智能·spring
ziqi5221 小时前
Docker容器镜像管理、制作
运维·docker·容器
霑潇雨1 小时前
Spark学习基础转换算子案例(单词计数(WordCount))
java·大数据·分布式·学习·spark·maven
夏日听雨眠2 小时前
Linux(信号,管道,共享内存)
java·服务器·网络