数据卷 volume

数据卷 是一个可供一个或多个容器使用的特殊目录,实现让容器中的一个目录和宿主机中的一个文件或者目录进行绑定。数据卷 是被设计用来持久化数据的

第一种:bind mount volume

第一步:创建本地目录

╭─root@du-z
╰─➤ mkdir /webroom
╭─root@du-z ~
╰─➤ echo "123" > /webroom/index.html

第二步:绑定本地目录,运行容器

docker run -v    # 绑定一个数据卷 Bind mount a volume
╭─root@du-z ~
╰─➤ docker run -v /webroom:/usr/share/nginx/html -d -P nginx
╭─root@du-z ~
╰─➤ docker ps -q
553d7e454376

第三步:查看bind 和ip

╭─root@du-z /webroom
╰─➤ docker inspect 553d7e454376|grep "Mounts" -A7
"Mounts": [
{
"Type": "bind",
"Source": "/webroom",
"Destination": "/usr/share/nginx/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
╭─root@du-z /webroom
╰─➤ docker inspect 553d7e454376|grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",

第四步:验证

╭─root@du-z ~
╰─➤ curl 172.17.0.3
123

第二种:Docker Management Volume

第一步:启动容器

╭─root@du-z ~
╰─➤ docker run -v /usr/share/nginx/html -d -P nginx ╭─root@du-z ~
╰─➤ docker ps -q
acc5955cc2db

第二步:查看mounts

╭─root@du-z ~
╰─➤ docker inspect acc5955cc2db |grep "Mounts" -A7
"Mounts": [
{
"Type": "volume",
"Name": "8e9f40b822fff53819401c0dc2df116f732c0a60e839433d3de61d03fd84ebda",
"Source": "/var/lib/docker/volumes/8e9f40b822fff53819401c0dc2df116f732c0a60e839433d3de61d03fd84ebda/_data",
"Destination": "/usr/share/nginx/html",
"Driver": "local",
"Mode": "",

第三步:查看本机目录

╭─root@du-z ~
╰─➤ ls /var/lib/docker/volumes
8e9f40b822fff53819401c0dc2df116f732c0a60e839433d3de61d03fd84ebda

第四步:删除容器

╭─root@du-z ~
╰─➤ docker stop acc5955cc2db
acc5955cc2db
╭─root@du-z ~
╰─➤ docker rm -v acc5955cc2db
acc5955cc2db # 注意:在删除容器时可以rm -v 数据卷(volumes)也一起删除;

批量删除孤儿卷

docker volume rm $(docker volume ls -qf dangling=true)

# 被使用的卷不会被删除

第三种:Container Data (基于现有的容器)

第一步:先运行容器

╭─root@du-z ~
╰─➤ docker run -d --name nginx1 nginx
18404c47804d194fe89dfc5b737ca0e508fa54db6cd5a05a62d98d414d763f07

第二步:再运行一个容器共享nginx1的volumes

╭─root@du-z ~
╰─➤ docker run --volumes-from nginx1 -d nginx
387ea757f57e2d427ecca372b4048bc950ab5b4f24d0a8849f020e86c0079a7e

docker volume 命令

╭─root@du-z ~
╰─➤ 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

实例1:创建一个volume

╭─root@du-z ~
╰─➤ docker volume create vol1
vol1
╭─root@du-z ~
╰─➤ ls /var/lib/docker/volumes/
vol1

实例2:查看volumes列表

╭─root@du-z ~
╰─➤ docker volume ls
DRIVER VOLUME NAME
local vol1

实例3:查看volume的详细信息

╭─root@du-z ~
╰─➤ docker volume inspect vol1
[
{
"CreatedAt": "2019-08-15T04:48:40-04:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/vol1/_data",
"Name": "vol1",
"Options": {},
"Scope": "local"
}
]

实例4:批量删除volumes

docker volume rm $(docker volume ls -qf dangling=true)

# 被使用的卷不会被删除

Docker --volume(数据持久化)的更多相关文章

  1. Docker Swarm volume 数据持久化

    Docker Swarm volume 数据持久化 volume 是将宿主级的目录映射到容器中,以实现数据持久化. 可以用两种方式来实现: volume 默认模式:工作节点宿主机数据同步到容器内. v ...

  2. docker mysql 数据持久化到本地、设置不区别表名大小写-清风柳絮-51CTO博客

    原文:docker mysql 数据持久化到本地.设置不区别表名大小写-清风柳絮-51CTO博客 Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 ...

  3. 【07】循序渐进学 docker:数据持久化

    写在前面的话 学到这里相信有心的朋友都发现问题了,我们每次都会去删掉容器,在创建新的容器.那数据怎么办?岂不删库跑路了? 就算不是数据库,假设公司有日志保留的需求,那每一次发布岂不日志都被干掉了? D ...

  4. Docker 容器数据 持久化(系统学习Docker05)

    写在前面 本来是可以将数据存储在 容器内部 的.但是存在容器内部,一旦容器被删除掉或者容器毁坏(我亲身经历的痛,当时我们的大数据平台就是运行在docker容器内,有次停电后,不管怎样容器都起不来.以前 ...

  5. Docker之 数据持久化

    容器中数据持久化主要有两种方式: 数据卷(Data Volumes) 数据卷容器(Data Volumes Dontainers) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,可以绕过UFS ...

  6. docker容器数据持久化

    将数据从宿主机挂载到容器中的三种方式 1.Volume 2.Bind Mounts 3.tmpfs Volumes:docker管理宿主机文件系统的一部分(/var/lib/docker/volume ...

  7. 4.云原生之Docker容器数据持久化介绍与实践

    转载自:https://www.bilibili.com/read/cv15182308/?from=readlist #### 创建一个web容器并创建一个数据卷挂载到容器的/webapp目录下(默 ...

  8. docker的数据持久化

    挂载宿主机的目录(实现很多容器共用一个宿主卷) [root@localhost ~]# docker run -itd --name web01 -v /var/www/html:/var/www/h ...

  9. Docker自学纪实(三)Docker容器数据持久化

    谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...

  10. docker数据持久化/共享---volume,bind-mount,tmpfs-mount

    一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供 ...

随机推荐

  1. 基于E-PUCK 2.0多智能体自主协同 高频投影定位系统

    群体智能机器人是一种国际前沿的人工智能研究项目,由多个小型机器人组成的集群式解决系统,灵感源于蚂蚁.蜜蜂.鱼等群体生物,在没有统一领导的情况下,也能合作执行大量复杂的任务,比如组建一个图形,再在此基础 ...

  2. Beta冲刺——第七天

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...

  3. Win Task 任务管理器 批量杀进程方法

    Example Kill All Chrome & Chrome Driver taskkill /IM chromedriver.exe /F taskkill /IM chrome.exe ...

  4. .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 详解)--学习笔记

    2.6.7 RabbitMQ -- Masstransit 详解 Consumer 消费者 Producer 生产者 Request-Response 请求-响应 Consumer 消费者 在 Mas ...

  5. 最新最简洁Spring Cloud Oauth2.0 Jwt 的Security方式

    因为Spring Cloud 2020.0.0和Spring Boot2.4.1版本升级比较大,所以把我接入过程中的一些需要注意的地方告诉大家 我使用的版本是Spring boot 2.4.1+Spr ...

  6. vue 深度作用选择器

    使用 scoped 后,父组件的样式将不会渗透到子组件中 如果想在使用scoped,不污染全局的情况下,依然可以修改子组件样式,可以使用深度作用选择器 .tree{ width: 100%; floa ...

  7. 【MyBatis】自定义 MyBatis

    自定义 MyBatis 文章源码 执行查询信息的分析 我们知道,MyBatis 在使用代理 DAO 的方式实现增删改查时只做两件事: 创建代理对象 在代理对象中调用 selectList() 配置信息 ...

  8. leetcode-242有效字母异位词

    题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram&quo ...

  9. python模块详解 | filecmp

    简介: filecmp是python内置的一个模块,用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单 两个主要的方法: filecmp.cmp(f1, f2[, shallow]) 比较 ...

  10. 容器编排系统K8s之Prometheus监控系统+Grafana部署

    前文我们聊到了k8s的apiservice资源结合自定义apiserver扩展原生apiserver功能的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/ ...