Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs。
volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。
bind mounts:可以存储在宿主机系统的任意位置。
tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统。

作用:
容器之间共享数据卷
容器被删除,数据卷不会被删除而造成数据的丢失,从而实现持久化。
实例:
 创建数据卷并查看详细信息。
[root@linux-docker01 ~]# docker volume ls
DRIVER              VOLUME NAME
[root@linux-docker01 ~]# docker volume create nginx-vol
nginx-vol
[root@linux-docker01 ~]# docker volume ls
DRIVER              VOLUME NAME
local               nginx-vol
[root@linux-docker01 ~]# docker volume inspect nginx-vol 
[
    {
        "CreatedAt": "2018-06-26T16:40:28+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data",
        "Name": "nginx-vol",
        "Options": {},
        "Scope": "local"
    }
]
volume模式创建一个容器挂载数据卷
[root@linux-docker01 ~]# docker run -d -it --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
a130825851e415c284c54a94bc2659100b9f56a814e3d88d2f6cb78910a107bb
[root@linux-docker01 ~]# docker exec -it nginx-test  bash
root@a130825851e4:/# cd /usr/share/nginx/html/
root@a130825851e4:/usr/share/nginx/html# ls
50x.html  index.html
[root@linux-docker01 _data]# pwd
/var/lib/docker/volumes/nginx-vol/_data
[root@linux-docker01 _data]# ls
50x.html  index.html
注:如果在src没有指定数据卷,则会自动创建,随机生成名字。
Bind Mounts模式创建容器挂载数据卷
[root@linux-docker01 ~]# mkdir -p /app/wwwroot
[root@linux-docker01 ~]# docker run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx
0353e05bc3083ec84480c6bf7bd83cf3972e84c675827f5760e4cd5029cd19f6
注:
1、绑定的源目录一定要存在,如果不存在则会抛出一个错误,不会自动创建。
2、 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏
官方文档:https://docs.docker.com/engine/admin/volumes/volumes/#start-a-container-with-a-volume

Docker数据卷持久化的更多相关文章

  1. docker 数据卷之进阶篇

    笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...

  2. docker 数据卷 ---- 进阶篇

    笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...

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

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

  4. docker数据卷(Data Volumes)

    Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...

  5. 『现学现忘』Docker基础 — 33、Docker数据卷容器的说明与共享数据原理

    目录 1.数据卷容器的说明 2.数据卷容器共享数据原理 3.总结 4.练习:MySQL实现数据共享 1.数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现 ...

  6. docker数据卷技术

    数据卷技术 数据卷手动挂载 数据卷容器 part1:数据卷挂载方式 数据卷手动挂载 -v 主机目录:容器目录 #核心参数 #示例 docker run -it --name=centos_test - ...

  7. 实例解析Docker数据卷+数据卷容器+flocker数据共享+DockerHub操作

    Docker内部数据管理和Docker之间的数据共享为数据卷和数据卷容器,实例解析1.将本地的文件作为容器的数据卷,2.数据卷flocker插件实现容器集群(或者Docker Swarm)的数据共享3 ...

  8. docker数据卷学习-利用数据卷实现mysql的快速恢复和迁移

    docker数据卷学习 一 新建带有数据卷的容器 1.从docker hub下载centos7镜像 # docker pull centos 2. 创建container # docker run - ...

  9. docker数据卷挂载

    docker数据卷挂载笔记 我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: ...

随机推荐

  1. JQuery-FullCalendar 多数据源实现日程展示

    背景 本次需求:实现在一个以月为界面的日历上展示每天发生的事件. 1.每天的事件有多个类型,不同类型的事件使用不同背景色标注,展示为某个类型事件的统计,比如: 会议(6) 2.点击某一天可以查询改天所 ...

  2. Yum安装时出现 The program yum-complete-transaction is found in the yum-utils package

    yum安装时出现 The program yum-complete-transaction is found in the yum-utils package yum之后,会显示上信息,并且最终执行结 ...

  3. 生信工具汇总--OMICtools

    各种生信工具: https://omictools.com/

  4. vue--transition-group

    1.为什么要使用<transition-group> <transition></transition>是vue封装的过渡组件 <transition nam ...

  5. Apache Hadoop学习笔记一

    官网:http://hadoop.apache.org/ 1 什么是Hadoop? Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件. Apache Hadoop软件库是一 ...

  6. EF| CodeFirst 代码先行

    CodeFirst 实例一 1.新建一个WebForm项目,名字就叫CodeFirstEF 2:在项目中添加引用EF所需要的5个核心类库:(如果找不到这几个类库,可以新建基于数据库的ADO.NET 实 ...

  7. Bubble sort of sorting algorithm

    Bubble sort,It's a relatively basic algorithm.The core implementation ideas are as follows: 1.Define ...

  8. 在docker中运行mariadb程序

    安装docker 获取mariadb镜像 docker pull mariadb 首先在https://hub.docker.com查找mariadb官方镜像,相关参数设置https://hub.do ...

  9. 在命令行启动vscode

    1.windows使用 code . 命令打开vscode 1.打开vscode安装位置,进入bin文件夹,复制路径 eg:E:\Microsoft VS Code\bin:2.回到桌面,右键我的电脑 ...

  10. 客户端与服务器之间通信收不到信息——readLine()

    写服务器端和客户端之间通信,结果一直读取不到信息,在https://blog.csdn.net/yiluxiangqian7715/article/details/50173573 上找到了原因:使用 ...