Docker与docker-compose中volume参数的使用方式

 更新时间:2024年11月15日 15:19:37   作者:Felier.  
文章介绍了Docker中的数据卷Volume的概念及其在宿主机和容器之间的数据共享和持久化,它详细说明了两种数据挂载方式:通过宿主机绝对路径挂载和通过卷标映射挂载,包括匿名挂载和具名挂载,同时,文章还展示了如何通过docker命令查看数据卷的宿主机目录

数据卷Volume的概念

在docker内有个“数据卷持久化”的概念,也就是我们常说的“数据挂载”。

它的作用是,将宿主机上的数据与容器内的数据形成映射,实现数据的共享或者数据的保存;当删除容器的时候,在宿主机上仍然能够保留文件目录,这就是Volume,数据卷。

数据挂载的实现方式

docker实现数据挂载的方式本质上分为两种:

  1. 通过宿主机绝对路径挂载
  2. 通过卷标映射挂载(又包括匿名挂载与具名挂载)

宿主机路径挂载在docker/docker-compose中的使用

使用方法:

# docker
docker run -itd -v 宿主机路径:容器路径 --name 容器名 镜像

# docker-compose.yaml
services:
  service_name:
    container_name: container_name
    image: image:tag
    restart: always
    volumes:
      - 宿主机路径:容器路径

引例如下:

卷标映射挂载在docker/docker-compose中的使用

当使用卷标的方式进行数据挂载的时候,容器数据具体存放在宿主机的什么路径其实并不直观,但是docker提供了方法查看数据卷的宿主机目录,具体查看的方法如下,后文会在引例中直观说明。

# 查看所有的数据卷
sudo docker volume ls
# 查看指定数据卷的详细信息 
sudo docker volume inspect 数据卷名称

A.匿名挂载

使用方法:

# docker
docker run -itd -v 容器路径 --name 容器名 镜像

# docker-compose.yaml
services:
  service_name:
    container_name: container_name
    image: image:tag
    restart: always
    volumes:
      - 容器路径

引例:

这种情况下,我们可以看到,当我们通过docker volume ls查看卷标的时候,我们只能查看到其对应的“匿名”的数据卷。

如下图所示,如果我们随便查看一个数据卷的详细信息(命令为docker volume inspect 数据卷),可以看出其挂载点实际是在/var/lib/docker/volumes/<uuid>/_data下面的,其中uuid是docker自动生成的,而/var/lib/docker是docker的默认路径。

B.具名挂载

使用方法:

# docker
docker run -itd -v 数据卷名称:容器路径 --name 容器名 镜像

# docker-compose.yaml
services:
  service_name:
    container_name: container_name
    image: image:tag
    restart: always
    volumes:
      - 数据卷名称:容器路径
volumes:
  数据卷名称:

引例:

这种情况下,我们可以看到,当我们通过docker volume ls查看卷标的时候,我们能查看到其对应的“具名”的数据卷

可以看出其挂载点实际是在/var/lib/docker/volumes/<数据卷名称>/_data下面的,/var/lib/docker是docker的默认路径

别急,特别针对docker-compose,还有另一个现象要看,如下:

可以看到,当我们通过docker-compose启动容器时,数据卷的名称多了一个software的前缀,而这正是docker-compose.yaml的存放路径,同时其挂载点在/var/lib/docker/volumes/<yaml路径_数据卷名称>/_data下面的。

特别的,如果docker-compose在根目录执行,则数据卷的名称的前缀会默认设置为default。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker比赛提交常用命令小结

    docker比赛提交常用命令小结

    这篇文章主要介绍了docker比赛提交常用命令小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Docker探索namespace详解

    Docker探索namespace详解

    以前对docker中的namespace了解甚少,今天在网上查阅相关文章,发现这篇还不错,介绍了namespace资源隔离以及进行namespace api操作的四种方式等内容,这里分享给大家,供参考。
    2017-10-10
  • win10环境下安装Docker的实现

    win10环境下安装Docker的实现

    这篇文章主要介绍了win10环境下安装Docker的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker学习之常用的基础命令总结

    Docker学习之常用的基础命令总结

    这篇文章给大家整理了一些Docker常用的基础命令,对大家日常使用Docker还是很有帮助,通过这些命令可以有效的提高大家的工作效率,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • AntDesign Docker部署详细流程

    AntDesign Docker部署详细流程

    这篇文章主要为大家介绍了AntDesign Docker部署流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 详解如何使用Docker部署Django+MySQL8开发环境

    详解如何使用Docker部署Django+MySQL8开发环境

    这篇文章主要介绍了详解如何使用Docker部署Django+MySQL8开发环境,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • 修改docker容器端口映射到主机的方法实现

    修改docker容器端口映射到主机的方法实现

    Docker容器的端口映射是通过docker run命令来启动容器,并指定端口映射参数,本文主要介绍了修改docker容器端口映射到主机的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Docker之cAdvisor的安装使用方式

    Docker之cAdvisor的安装使用方式

    这篇文章主要介绍了Docker之cAdvisor的安装使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 使用Docker将容器打成镜像的方法步骤

    使用Docker将容器打成镜像的方法步骤

    本文主要介绍了使用Docker将容器打成镜像的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Docker容器harbor私有仓库部署和管理

    Docker容器harbor私有仓库部署和管理

    这篇文章主要介绍了Docker容器harbor私有仓库部署和管理,文章围绕主题展开详细的内容介绍,具有一定的的参考价值,需要的朋友可以参考一下
    2022-08-08

最新评论