数据卷 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. 第十章节 BJROBOT PID 动态调节【ROS全开源阿克曼转向智能网联无人驾驶车】

    1.把小车架空,平放在地板上,注意四个轮子一定要悬空.用资料里的虚拟机,打开一个终端 ssh 过去主控端启动 roslaunch znjrobot bringup.launch.   2.在虚拟机端再 ...

  2. umi3.2+ targets ie不生效的问题

    直接创建umi项目 config.ts对targets{ie:11}不生效 错误方法1: 在入口页app.tsx新增 import @babel/polyfill 错误方法2: 在入口页app.tsx ...

  3. CSS_rules

    CSS 特性 1)控制灵活,功能强大 元素-->标签 针对html的元素 2)可以设置html元素的属性,与html框架的进行分离 3)执行效率更高 CSS语法 text-indent 文字缩进 ...

  4. Java安全之Weblogic 2016-3510 分析

    Java安全之Weblogic 2016-3510 分析 首发安全客:Java安全之Weblogic 2016-3510 分析 0x00 前言 续前面两篇文章的T3漏洞分析文章,继续来分析CVE-20 ...

  5. Windows下如何玩转火热的go-zero

    作者:阿啄debugIT 前言 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架.通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验. go-zero 包含极简的 API ...

  6. Java通过基姆拉尔森公式判断当前日期是不是工作日

    基姆拉尔森公式 算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 在公式中d表示日期中的日数,m表示月份数,y表示年数. 注意:在公 ...

  7. Centos7安装RabbitMQ详细教程

    MQ引言 什么是MQ MQ:message Queue翻译为消息队列,通过典型的生产者和消费者模型不断向消息队列中生产消息,消费者不断从队列中获取消息.因为消息的生产和消费都是一部的,而且只关心消息的 ...

  8. Payment Spring Boot 1.0.4.RELEASE 发布,最易用的微信支付 V3 实现

    Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 欢迎ISSUE,欢迎 ...

  9. 2021年正确的Android逆向开发学习之路

    2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...

  10. bash shell数组使用总结

    本文为原创博文,转发请注明原创链接:https://www.cnblogs.com/dingbj/p/10090583.html  数组的概念就不多说了,大家都懂! shell数组分为索引数组和关联数 ...