如何使用docker数据卷?

开始之前

如果你有一些需要持续更新的数据并且希望持久化数据,或者需要在不同的容器之间共享数据,再者需要主机与容器之间共享数据,那么你可以使用数据卷来满足这些需求。

数据卷定义

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
数据卷可以在容器之间共享和重用。
对数据卷的修改会立马生效。
数据卷默认会一直存在,即使容器被删除。

使用数据卷

数据卷有两种创建方式一是创建容器时创建数据卷,二是先创建好数据卷,在创建容器时挂载这个数据卷,两种方式均可以。

  1. 创建一个数据卷
docker volume create demo-data
demo-data
  1. 创建容器使用-v(--volume)参数来挂载数据卷
docker run --name demo1 -d     -v demo-data:/var/www/html nginx:alpine
docker run --name demo2 -d     -v demo-data:/var/www/html nginx:alpine
  1. 列出数据卷
docker volume ls
DRIVER      VOLUME NAME
local       demo-data
  1. 查看数据卷详细信息
docker volume inspect demo-data
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/demo-data/_data",
        "Name": "demo-data",
        "Options": {},
        "Scope": "local"
    }
]
  1. 删除数据卷
docker volume rm demo-data
Error response from daemon: remove demo-data: volume is in use - [#省略..]

注意: 由于有容器正在使用数据卷,提示无法删除数据卷。

测试数据卷

  1. 宿主机写入数据
hostname > /var/lib/docker/volumes/demo-data/_data/hosts.txt

注意: 这个目录对应创建的 demo-data 数据卷。

  1. 容器写入数据
docker exec -ti demo1 sh -c ‘hostname >> /var/www/html/hosts.txt‘
docker exec -ti demo2 sh -c ‘hostname >> /var/www/html/hosts.txt‘
  1. 读取数据
cat /var/lib/docker/volumes/demo-data/_data/hosts.txt
node0
87c60cbe6147
a6bc3c00c790
  1. 删除容器数据卷仍然保留
docker stop demo1
docker stop demo2
docker rm demo1
docker rm demo2

数据卷仍然存在

docker volume ls
DRIVER      VOLUME NAME
local       demo-data

如果需要可以使用 rm 选项删除数据卷

docker volume rm demo-data

数据卷已不存在

docker volume inspect demo-data
[]
Error: No such volume: demo-data

命令帮助

创建容器时挂载数据卷参数

docker run --help | grep ‘\-v,‘
  -v, --volume list     Bind mount a volume

删除容器时一并删除数据卷参数(慎用)

 docker rm --help | grep ‘\-v‘

  -v, --volumes   Remove the volumes associated with the container

数据卷管理命令

docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

小结

最后来总结下文章中的知识点

  • 数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在
    容器被删除后自动删除数据卷 。
  • 如果需要在删除容器的同时移除数据卷。可以在删除容器
    的时候使用docker rm -v这个命令。

参考文章

doker&k8s Qun [703906133]

原文地址:https://blog.51cto.com/14521173/2451910

时间: 2024-08-30 00:06:50

如何使用docker数据卷?的相关文章

Docker学习笔记之docker数据卷

Docker数据卷数据卷是经过特殊设计的目录,可用绕过联合文件系统(UFS),为一个或多个容器提供访问 数据卷的特点:数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中数据卷可以在容器之间共享和重用可以对数据卷里的内容直接进行修改数据卷的变化不会影响镜像的更新卷会一直存在,即使挂载数据卷的容器已经被删除 为容器添加数据卷:docker run -v ~/container_data:/data -it centos /bin/bash:contai

Docker 数据卷,数据卷容器详细介绍

Docker 数据卷,数据卷容器详细介绍 引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(mount

docker数据卷备份恢复以及配置桥接网络

笔记内容:docker数据卷备份恢复以及网络相关笔记日期:2018-02-06 25.9 数据卷备份恢复 25.10 docker网络模式 25.11 opration not permitted错误 25.12 配置桥接网络 25.9 数据卷备份恢复 备份: 如果数据卷容器的共享目录已经挂载到了本地宿主机的磁盘上,那么就无需进行数据卷备份.没有进行挂载到本地,而是作为共享目录的数据卷容器,就得定期将数据卷进行一个备份,不然如果数据卷被删除的话,数据也会丢失. 假设数据卷容器共享的目录是data

4.docker数据卷管理

生产过程中使用docker往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,因此就需要数据卷来做数据持久化 *数据卷:容器内数据直接映射到本地主机环境 数据卷的特性: 1)可以在容器之间共享和重用,容器间传递数据变得高效方便 2)对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作 3)对数据卷的更新不会影响镜像,解耦了应用和数据 4)卷会一直存在,直到没有容器使用,可以安全地卸载它 创建数据卷 docker run -it --name web -v ~/webapp:/w

docker数据卷应用场景

docker数据卷应用场景 在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载统一个数据卷,从而共享数据卷中的数据 当宿主机不能保证一定存在某一个目录或一些固定的文件路径时,使用数据卷可以规避这种限制带来的问题 当想把容器中的数据存储在宿主机之外的地方时,比如远程主机上和云存储上 当你需要把容器数据在不同宿主机之间备份.恢复或迁移时,数据卷是很好的选择 数据覆盖问题 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中 如果挂载一个非空的数据卷到容

Docker 数据卷与容器互联(3)

title: Docker 数据卷与容器互联(3) date: 2018-12-15 14:50:42 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.

Docker学习第三天(Docker数据卷管理)

1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中: 1.volumes:Docker管理宿主机文件系统的一部分(默认文件位置:/var/lib/docker/volumes) 常用 由上图可知我们到了 /var/lib/docker/volumes 目录下有的文件名很长这时匿名 二有的则是我们创建时制定的 2.

Docker学习笔记(8-3)Docker - 数据卷的备份和还原

学习目标: 备份数据卷 还原数据卷 docker run --volumes-from cid -v ${pwd}:/backup ubuntu tar cvf /backup/backup.tar docker restart dvt5 docker attach dvt5 exit # 通过容器备份数据卷容器中的数据卷 docker run --volumes-from dvt5 -v ~/backup:/backup --name dvt10 ubuntu tar cvf /backup/

Docker学习笔记(8-2)Docker - 数据卷容器

学习目的: 数据卷容器:用于在不能访问容器目录时,实现荣期间的数据共享 数据卷容器: 命名的容器挂在数据卷,其他容器通过挂在这个容器实现数据共享,挂载数据卷的容器就叫做数据卷容器 数据卷容器挂载宿主机目录. 挂载数据卷容器的方法 docker run --volumes-from [CONTAINER-NAME] # 使用上节课方法,构建过程中用指令创建数据卷 $ docker run -it --name dvt4 lexiaofei/dvt # ls #touch /datavolume1/

Docker 数据卷

想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失.在Docker中,只读层及在顶部的读写层