docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker与docker-compose中volume参数使用

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

作者: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。

总结

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

您可能感兴趣的文章:
阅读全文