数据卷 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. Node项目模板管理脚手架ptm-cli开发

    目录 一.ptm-cli 使用说明 1.特点 2.安装 3.使用 1)基础帮助命令 2)添加模板/项目 3)编辑模板/项目 4)查看模板/项目 5)删除模板/项目 6)基于模板新建/初始化项目 二 p ...

  2. TurtleBot3 Waffle (tx2版华夫)(13)RC100遥控杆控制

    13.1.遥控器说明 使用ROBOTIS RC100的设置已经在ROS的OpenCR固件中,因此不需要安装必需软件包, 安装号即可使用. 13.2.遥控器的安装 1接线口穿过后壳的过孔. 2接线口连接 ...

  3. 为什么Java中lambda表达式不能改变外部变量的值,也不能定义自己的同名的本地变量呢?

    作者:blindpirate链接:https://www.zhihu.com/question/361639494/answer/948286842来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...

  4. ElasticSearch教程——filter与query对比(转学习使用)

    一.数据准备 PUT /company/employee/2 { "address": { "country": "china", &quo ...

  5. netcore项目中使用 SpringCloudConfig 和apollo做配置中心

    版权所有,转载请注明出处 https://www.cnblogs.com/netqq/p/14251403.html 一.使用apollo作为配置中心 首先apollo 项目简介和安装请自行百度,本文 ...

  6. Solon rpc 之 SocketD 协议

    1. 简介 SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议.旨在用于分布式应用程序中.从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案.它的消息协 ...

  7. TCP/IP五层模型概述

    • 为什么要分层?    ○ 协议太多,将众多协议分层解决,能提高效率,复杂问题简单化,更容易发现问题,并针对性解决问题.• OSI七层模型     ○ 同层使用相同的协议,下层为上层提供服务.   ...

  8. MySQL select join on 连表查询和自连接查询

    连表查询 JOIN ON 操作 描述 inner join 只返回匹配的值 right join 会从右表中返回所有的值, 即使左表中没有匹配 left join 会从左表中返回所有的值, 即使右表中 ...

  9. 【ORA】ORA-4031错误分析和解决办法

    1. ORA-4031错误的原因,一般是大量的hard parse导致了shared pool中的free list中产生大量的内存小碎片,当一个需要很大内存来进行hard parse的sql语句到来 ...

  10. MySQL全面瓦解17:触发器相关

    关于触发器 现实开发中我们经常会遇到这种情况,比如添加.删除和修改信息的时候需要记录日志,我们就要在完成常规的数据库逻辑操作之后再去写入日志表,这样变成了两步操作,更复杂了. 又比如删除一个人员信息的 ...