当前位置: 首页 > news >正文

网站开发后端书籍nba最新交易信息

网站开发后端书籍,nba最新交易信息,网站建设错误代码50019,宁波企业seo服务docker数据卷(数据挂载)持久化 一、docker对于数据的管理二、docker挂载主机目录---指定路径挂载三、docker使用数据卷Volume挂载四、数据共享--数据卷容器五、备份和恢复 docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的…

docker数据卷(数据挂载)持久化

  • 一、docker对于数据的管理
  • 二、docker挂载主机目录---指定路径挂载
  • 三、docker使用数据卷Volume挂载
  • 四、数据共享--数据卷容器
  • 五、备份和恢复

docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的时候,docker会加载这些只读层并在这些只读层的上面(栈顶)增加一个读写层。这时如果修改正在运行的容器中已有的文件,那么这个文件将会从只读层复制到读写层。该文件的只读版本还在,只是被上面读写层的该文件的副本隐藏。当删除docker,或者重新启动时,之前的更改将会消失。在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。

一、docker对于数据的管理

两种方式:

  1. 数据卷(Volumes)
  2. 挂载主机目录(Bind mounts)

为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响镜像
  • 数据卷默认会一直存在,即使容器被删除

Docker中提供了两种挂载方式,-v和-mount。

下面展开介绍。

二、docker挂载主机目录—指定路径挂载

格式:

docker run -it --name c1 -v /宿主机目录:/docker目录 -d imagename 

--name: 为容器起名字
-p:宿主机端口:docker端口 (端口映射)
-v:宿主机目录:docker目录 (必须为绝对路径)

如:

docker run -it --name xxxx -p 8888:8888  -v /my:/docker -d  imagename

/my:宿主机目录
/docker:容器的数据目录

三、docker使用数据卷Volume挂载

匿名挂载,具名挂载,指定路径挂载的命令区别如下:
-v 容器内路径 #匿名挂载

-v 卷名:容器内路径 #具名挂载

-v /宿主机路径:容器内路径 #指定路径挂载

1.创建数据卷

docker volume create my-vol

2.查看所有的数据卷

$ docker volume ls
local my-vol

3.查看指定数据卷的信息

$ docker volume inspect my-vol
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"Name": "my-vol",
"Options": {},
"Scope": "local"
}
]

4.删除数据卷 docker volume rm …

$ docker volume rm my-vol

5.删除容器之时删除相关的卷

$ docker rm -v ...
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷 。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。

*无主的数据卷可能会占据很多空间,要清理请使用以下命令

$ docker volume prune

6.使用数据卷来挂载:
具名挂载&匿名挂载
(1)匿名挂载:-v 容器内路径

docker run -it -p 3306:3306 \
--name mysql \
-v /var/lib/mysql  \
-d mysql:8.0.21

当你docker volume ls,会看到如下:
local c5ed47ea84c7ccb620d97a2cfecdcfb8944720526afc7295e5bb26023dada859(匿名)

这种数据都是匿名挂载的,因为 我们在 -v 挂载数据卷的时候 没有指定 容器外的路径。

(2)具名挂载:docker -v 卷名:容器内路径

docker run -it -p 3306:3306 \
--name mysql \
-v mysql_volume:/var/lib/mysql  \
-d mysql:8.0.21

当你docker volume ls,会看到如下:

DRIVER VOLUME NAME
local mysql_volume(具名挂载)

mysql_volume就是我的数据卷名,它在docker默认位置。

7.使用 --mount创建数据卷
挂载一个主机目录作为数据卷。
使用 --mount 标记可以指定挂载一个本地主机的目录到容器中去。

$ docker run -it -p 3306:3306 \
--name mysql \
# -v /src/mysql:/var/lib/mysql \
--mount type=bind,source=/src/mysql,target=/var/lib/mysql  \
-d mysql:8.0.21

上面的命令挂载主机的/src/mysql目录到容器的/var/lib/mysql目录。用户可以放置一些程序到本地目录中,来查看容器是否正常工作。本地目录的路径必须是绝对路径,如果目录不存在 Docker 会自动为你创建它。


8.Docker 挂载主机目录的默认权限是读写 ,用户也可以通过添加readonly 参数指定为只读 。

$ docker run -it -p 3306:3306 \
--name mysql \
# -v /src/mysql:/var/lib/mysql \
--mount type=bind,source=/src/mysql,target=/var/lib/mysql,readonly \
-d mysql:8.0.21加了readonly之后,就挂载为只读了。如果你在容器内/src/mysql目录新建文件,会显示如下错误
/src/mysql # touch new.txt
touch: new.txt: Read-only file system

小结:

  • 平时使用的时候 尽量使用 指定路径挂载和 具名挂载,
    -v /容器内路径 匿名挂载
    -v 卷名:/容器内路径 具名挂载
    -v /宿主机路径:/容器内路径 指定路径挂载

  • 数据卷权限:
    -v 容器内路径:ro Readonly 只读
    -v 容器内路径:rw Readwrite 可读可写
    默认是可读可写

四、数据共享–数据卷容器

    如果我们有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
    常见的使用场景是使用纯数据容器来持久化数据库、配置文件或者数据文件等。

    数据卷容器:其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。

数据共享: 如果想要实现容器间的数据共享,那么需要授权一个容器访问另一个容器的Volume。我们可以在使用docker run时使用-volumes-from参数来进行指定。


如:docker run -it -h NEWCONTAINER --volumes-from shanlei-nginx ubuntu /bin/bash


注意:值得注意的是不管shanlei-nginx是否运行,它都会起作用。只要有容器连接Volume,它就不会被删除。

1.首先我们需要先创建一个数据卷容器

docker run -d -v /dbdata --name dbdata mysql:8.0.21 echo Data-only container for mysql

2.然后通过–volumes-from指令参数来挂载 dbdata 容器中的数据卷。

docker run -d --volumes-from dbdata --name data1 mysql:8.0.21

也可以使用多个 --volumes-from 参数来从多个容器挂载多个数据卷。也可以从其他已经挂载了数据卷的容器来挂载数据卷。

docker run -d --name data3 --volumes-from data1 mysql:8.0.21

3.查看数据卷容器是否挂载成功:

docker exec -it data1 /bin/bash

注意:如果删除了挂载的容器(包括 dbdata、data1 和 data2等),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。

五、备份和恢复

利用数据卷对其中的数据进行进行备份、恢复和迁移。

备份:
使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从本地主机挂载当前到容器的 /backup 目录。命令如下:

docker run --volumes-from dbdata -v $(pwd):/backup ubuntu 
tar cvf /backup/backup.tar  /dbdata

容器启动后,使用了 tar 命令来将 dbdata 卷备份为本地的 /backup/backup.tar 。

恢复:

如果要恢复数据到一个容器,首先创建一个带有数据卷的容器 dbdata2。

docker run -v  /dbdata --name dbdata2 ubuntu /bin/bash

然后创建另一个容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到挂载的容器卷中。

docker run --volumes-from dbdata2 -v $(pwd):/backup busybox 
tar xvf /backup/backup.tar
http://www.hkea.cn/news/201621/

相关文章:

  • 请人做网站要多少网络事件营销
  • 网站页脚有什么作用厦门seo哪家强
  • 东莞百度提升优化优化推广网站推荐
  • 查企业网站有哪些站长统计app软件
  • 做a高清视频在线观看网站济源新站seo关键词排名推广
  • 刚做的网站怎么搜索不出来百度seo收录软件
  • 视频拍摄app站长工具seo综合查询广告
  • 新闻单位建设网站的意义武汉seo推广优化
  • 低价网站公司软文怎么写
  • 东莞市建设公共交易中心网站百度官网首页
  • 如何建立的网站能争钱优化营商环境 助推高质量发展
  • 做百度网站营销型网站建设排名
  • 网站域名被黑国际新闻最新消息战争
  • 苏州网站开发公司济南兴田德润厉害吗网络自动推广软件
  • 广药网站建设试卷株洲最新今日头条
  • 网站建设管理考核办法微信推广平台怎么做
  • 网站新闻模块代码网络推广有哪些常见的推广方法
  • 合肥大型网站如何推广普通话
  • 高端网站制作软件怎么样推广自己的店铺和产品
  • 无障碍浏览网站怎么做关键词seo排名优化推荐
  • wordpress 247seo推广系统
  • 做深圳门户网站起什么名字好泰州seo外包公司
  • 网站视频上传怎么做百度站长平台论坛
  • wordpress农业模板下载小时seo
  • 做网站语言排名2018发帖推广哪个平台好
  • 销氪crmseo入门讲解
  • 蒙阴哪有做淘宝网站的钓鱼网站制作教程
  • 网站如何做导航条下拉菜单怎么做百度网页
  • 网站开发都做什么平台推广精准客源
  • 网站建设共享ip宁波seo搜索引擎优化