数据卷 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. IDEA中配置Git,在Github上clone项目到IDEA

    一.安装git 1.用homebrew安装git 运行以下命令安装 brew install git 默认的安装位置是 /usr/local/Cellar目录中(后面会用到) 二.在idea中配置Gi ...

  2. 认识PHP8

    PHP 团队于2020年11月26日宣布 PHP 8 正式发布!这意味着将不会有 PHP 7.5 版本.PHP8 目前正处于非常活跃的开发阶段,所以在接下来的几个月里,情况可能会发生很大的变化.我也分 ...

  3. Windows server 安装远程桌面及破解120天时间限制授权

    一.问题描述 Windows Server系列服务器默认远程桌面连接数是2个用户(本文适用于所有Windows Server系列服务器),如果多余两个用户进行远程桌面连接时,系统就会提示超过连接数,可 ...

  4. 总结(2019CSP之后),含题解

    从\(\mathcal{CSP}\) 爆炸 到现在,已经有\(3\)个月了.这三个月间,我--这个小蒟蒻又接触了许多听不懂的东西 \(\mathcal{No.}1\) 字符串\(\mathcal{ha ...

  5. LeetCode 长度最小的子数组

    题目: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0. 思路: 非常明显用滑动窗口处 ...

  6. 修改postman工具的代码生成工具让它锦上添花

    @font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...

  7. jquery表格插件Datatables使用、快速上手

    Datatables使用 一.简介 官网:https://datatables.net/ 中文官网:http://datatables.club/ Datatables是一款jquery表格插件.它是 ...

  8. python安装whl包时出现的问题解决:is not a supported wheel on this platform

    @ 目录 一.问题 二.查找问题 三.问题解决 一.问题 1.下载一个twisted包 安装Twisted,进入https://www.lfd.uci.edu/~gohlke/pythonlibs 下 ...

  9. LeetCode105 从前序和中序序列构造二叉树

    题目描述: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9 ...

  10. C#使用OracleParameter操作数据库

    public static int GetScalar(string sql,params OracleParameter [] OracleParms) { using (OracleConnect ...