docker容器, 再启动之后 我们可以对其进行 修改删除等等。

如果是一个数据库的容器, 里面的数据 不想随着这个容器的消失, 而消失。  就需要持久化数据存储。

Data Volume

这是 docker hub 上面  mysql 的Dockerfile 这里的 VOLUME 意思就是, 将产生的数据 写入到当前主机的 /var/lib/mysql 里面。

[miller@docker4 ~]$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZEdaocloud.io/library/mysql latest 9228ee8bac7a 11 days ago 547MB

[miller@docker4 ~]$docker run -d --name=mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true daocloud.io/library/mysql

e7945f20bc456038a110a9798299356c8e7912a22eceaaf4e2bd29880460ab6f

-e MYSQL_ALLOW_EMPTY_PASSWORD=true 告诉mysql 没有密码也可以用。

https://hub.docker.com/_/mysql  这里有一些参数的详解。 也可以设置密码。

[miller@docker4 ~]$ docker volume ls # 会在主机上找个地方存 数据

DRIVER VOLUME NAME

local 283f5d6584642ae6d32d5e02fd1330855b501dd891ddf38c5b40428183c652c8 # 这个是redis的

local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 # 这个是mysql的

[miller@docker4 docker]$ docker volume inspect 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919

[

{"CreatedAt": "2020-04-11T20:26:36+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919/_data","Name": "330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919","Options": null,"Scope": "local"}

]

"Mountpoint": "/var/lib/docker/volumes/330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919/_data" 这个路径就是安装docker这台主机

上的文件路径。 数据库产生的数据 都会存储到这里。 volume 是不会因为容器的删除 而消失。

由于volume的名字不友好, 可以自己定义:起别名:

[miller@docker4 ~]$ docker run -d --name=mysql1-v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true daocloud.io/library/mysql

7b006082d7d9c1cc8f17dfaefda26afea6d2adb0c89b216eafe193fa9420c917

-v mysql:/var/lib/mysql 就这一段参数。 本机上的 /var/lib/docker/volumes/mysql的 就和 容器中 /var/lib/mysql 这两个目录是同步的了。

[miller@docker4 ~]$ docker volume ls

DRIVER VOLUME NAME

local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 # redis的

local mysql # 刚刚创建的 mysql 容器的 volume

可以进到 MySQL 容器中,登录客户端。

[miller@docker4 ~]$ docker exec -it mysql1 /bin/bashroot@c057b8fbb3ad:/# mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection idis 8Server version:8.0.19 MySQL Community Server -GPL

Copyright (c)2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracleis a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type'help;' or '\h' for help. Type '\c'to clear the current input statement.

mysql>

在这个数据库里面,  创建一个库 然后, 停止mysql容器, 再删除容器。

[miller@docker4 ~]$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c057b8fbb3ad daocloud.io/library/mysql "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp, 33060/tcp mysql1

[miller@docker4~]$ docker rm -f mysql1 # 停止这个容器 并且删除

mysql1

[miller@docker4 ~]$ docker volume ls

DRIVER VOLUME NAME

local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919

local mysql # volume 是还在的。 后面再创建一个 容器 然后依然使用这个 volume

# 可以看到, 再次重新创建一个 容器。 依然使用同一个  volume 的话。 还能继续使用原来的数据。 是没有丢的。

[miller@docker4 ~]$ docker run -d --name=mysql2-v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true daocloud.io/library/mysql

f9cfe55e7e6d85a6c44bc177fb324051e5735e80dbf30c5224cbfd0c7f844181[miller@docker4~]$ docker exec -it mysql2 mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection idis 8Server version:8.0.19 MySQL Community Server -GPL

Copyright (c)2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracleis a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type'help;' or '\h' for help. Type '\c'to clear the current input statement.

mysql>show databases;+--------------------+

| Database |

+--------------------+

|docker |

| information_schema |

| mysql |

| performance_schema |

| sys |

+--------------------+

5 rows in set (0.01 sec)

Bind Mounting: 的方式, 进行数据持久化。(这个其实就是将docker宿主机的一个 目录。映射到容器当中。)

不仅仅是数据库:

如果启用一个 nginx 服务, 在这个容器的  /usr/share/nginx/html 这个目录下, 都是这个web服务的静态文件。

docker run -v 这个指令  可以将这个容器中的   /usr/share/nginx/html 路径, 映射到 本机的某个目录中。 这样我们在修改本机的文件的时候, 同步的容器中的这个目录

也会跟着修改。  因为他们是同步的。

[miller@ static_html_file] docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 # 这样当前目录就映射到了 容器中。两边是同步的。

这样做的好处就是, 对于开发者是一个极大的方便。

因为将本机的目录 , 映射到容器当中。我们在本机的这个目录中做任何事情。 都会马上体现到 容器中。

方便调试 开发。

非常方便, 因为一般宿主机的环境, 和测试 运维等等 都不相同。 但是如果大家都是用docker的话。  都可以使用相同的环境进行开发测试。

docker mysql data volume_Docker 持久化存储, Data Volume/Bind Mounting相关推荐

  1. 从零开始学习docker(九)持久化存储和数据共享之 Data Volume

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 有些时候容器会产生一些数据,而我们不希望这些数据随着容器的删除而删除.想保证数据的安全,一般用在数据库. 首先看 ...

  2. 从零开始学习docker(九)持久化存储和数据共享之 bind Mounting

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 数据持久化的第一种方式Data Volume 使用Data Volume: 首先在Dockerfile中定义 V ...

  3. httpsession mysql,session 的持久化存储

    sessio遇新是直朋能到分览支体调n 的定义: ses用,事少来最差端在事路原们这制码效移,动sion 是一个概念,是一个数据对象,用来存储访问者的朋支不器几事为的时后级功发发来久都这样含制层是请些 ...

  4. k8s之持久化存储PV、PVC

    目录 前言 一.k8s 容器磁盘 1.1 Volume(存储卷) 1.2 emptyDir 存储卷 1.3  hostPath存储卷 二.PV和PVC 1.PV 概念 2.PVC概念 3.PV 与 P ...

  5. 爬虫数据持久化存储——写入文件

    这里写目录标题 爬虫数据持久化存储--写入文件 open方法 文件的读取及写入 爬虫数据持久化存储--csv文件 爬虫数据处理:操作数据库模块--pymysql pymysql介绍: pymysql安 ...

  6. kubectl 创建pvc_k8s的持久化存储PVPVC

    1.PV和PVC的引入 Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足. 拿前面 AWS EBS 的例子来说,要使用 Volume,Pod 必须事先知道如下信息: 当前 Volu ...

  7. docker mysql volum_Docker --volume(数据持久化)

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

  8. iOS 之Core Data持久化存储

    iOS教程:Core Data数据持久性存储基础教程 其实最近更多的是在写这篇文章<iOS教程:使用持久性数据Core Data>,这篇是<iOS开发教程:Storyboard全解析 ...

  9. docker 保存 环境持久化_18、docker的持久化存储和数据共享

    18.1 Data Volume Docker持久化数据方案 基于本地文件系统的Volume 可以在执行docker create或者docker run的时候,通过-v参数将主机的目录作为容器的数据 ...

最新文章

  1. SpringBoot-(6)-日志SLF4j
  2. 在.NET中不安装Office使用EPPlus生成带图表(Chart)的Excel报表
  3. jQuery EasyUI 选项卡面板tabs使用实例精讲
  4. Dropbox推独立应用,公司估值已达100亿美元
  5. 【操作系统复习】操作系统的发展与分类
  6. day18-基于DjangoORM的外键实现增加用户(含select标签)
  7. python实现规则引擎_python – 如何在不使用eval()或exec()的情况下创建规则引擎?...
  8. [postgresql]postgresql的锁介绍
  9. 跨境电商系统的一个架构演进
  10. NDTTS-II变压器综合试验系统
  11. 基于Java毕业设计中国古诗词学习平台源码+系统+mysql+lw文档+部署软件
  12. 2100 年的世界会怎样?特拉华教授用机器学习开启“上帝之眼”
  13. Java中三元运算符
  14. 【ML37】Bellman Equations
  15. CWnd::WindowProc的理解
  16. 【Cesium】计算模型的朝向四元数,实现模型运动中调整朝向
  17. 报告解读下载 | 11月《中国数据库行业分析报告》发布,精彩抢先看
  18. 计量经济学——一元线性回归模型(例题)
  19. 【Angular 基础入门】——知识点整合
  20. 奥丁软件管家解压密码汇总_管家婆财贸ERP如何做销售分析?

热门文章

  1. 用Rhino V7建造机甲学习教程 Building a Mecha using Rhino V7
  2. n-netstat 查看网络状态命令
  3. python的popen函数
  4. ORM操作models一对多、多对多关系
  5. 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...
  6. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...
  7. HDU1402(FFT入门)
  8. 详解 Date 对象
  9. Github上的PHP资源汇总大全
  10. 【HTML/XML 11】XML和HTML的混合使用