19-Docker数据持久化
什么是Docker数据持久化
容器在运行时会在镜像层上加上一层:可写层。
当删除容器时,可写层就会一起被删除,数据丢失。
数据持久化就是就是将数据持久化保存,删除容器之后,数据仍然存在。
方法1-挂载本地目录到容器中
- 挂载方法
docker run -d -p 8080:80 -v /html:/usr/share/nginx/html nginx #-v参数将本地的/html挂载到容器中的/usr/share/nginx/html
- 实验-nginx容器的数据持久化
mkdir /html
vim /html/index.html
<h1>Hello eagle<h1>
docker run -d -p 8080:80 -v /html:/usr/share/nginx/html nginx
firewall-cmd --add-port=8080/tcp
firewall-cmd --add-port=8080/tcp --per
#测试:http://192.168.191.131:8080/
- 挂载为只读模式
-v /a:/b:ro #挂载为只读模式(read only)
方法2-数据卷
数据卷和本机被挂载目录相似,同样使用-v挂载容器中。
数据卷集中保存在/var/lib/docker/volumes中。
创建数据卷
docker volume create -d local test #创建一个名为test的数据卷
创建之后,/var/lib/docker/volumes就会出现test的目录。
test目录中有一个目录:_data。这个目录由于保存所有数据。
查看数据卷
docker volume ls #列出所有数据卷
docker volume inspect test #查看详细信息
删除数据卷
docker volume prune #删除无用数据卷
docker volume rm test #删除数据卷test
使用数据卷
docker run -d -it -p 8800:80 -v test:/usr/share/nginx/html nginx
解释:
和挂载一样,使用-v命令指定数据卷
删除容器之后,数据卷不会丢失内容
若数据卷中有数据,将数据卷中的_data目录 挂载到 容器目录。
若数据卷中无数据,将容器目录中的数据 复制到 数据卷中的_data目录,然后挂载。
数据卷容器
数据卷可以被挂载到多个容器中,这时候数据卷中的数据被共享。
如果要共享数据卷,需要使用--volumes-from参数。
实验
docker volume create -d local volume1
vim index.html
<h1>hello eagle</h1>
docker run -d -it -p 8080:80 -v volume1:/usr/share/nginx/html nginx
docker run -d -it -p 8081:80 --volumes-from a215 nginx #共享容器a215的数据卷
firewall-cmd --add-port=8080-8081/tcp
firewall-cmd --add-port=8080-8081/tcp --per
- 测试
访问http://192.168.191.131:8080/
访问http://192.168.191.131:8081/
结果一样则正确
- 进一步测试
cd /var/lib/docker/volumes/volume1/_data
vim index.html
<h1>hello world</h1>
访问http://192.168.191.131:8080/
访问http://192.168.191.131:8081/
结果由hello eagle变成了hello world。
19-Docker数据持久化的更多相关文章
- Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)
Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...
- Docker数据持久化与容器迁移
上节讲到当容器运行期间产生的数据是不会在写镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据.如果想做到数据持久化,Docker提供数据卷(Data volume)或 ...
- docker数据持久化
转载/参考: https://www.jianshu.com/p/ef0f24fd0674 Docker的数据持久化主要有两种方式: bind mount docker managed volume ...
- docker数据持久化/共享---volume,bind-mount,tmpfs-mount
一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供 ...
- Docker | 数据持久化与数据共享
数据持久化(安装MySQL) 参考另一篇Docker安装mysql: https://www.cnblogs.com/all-smile/p/16778376.html MySQL的数据持久化问题 # ...
- `docker数据持久化volume和bind mounts两种方式
将数据从宿主机到容器的三种方式: ,volumes:docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)保存数据的最佳方式 ,bind mounts 将宿主机上的任 ...
- 22. docker 数据持久化 Data Volume
1 . 使用场景 在docker 容器被删除的时候 希望数据不丢失 2 . Volume 的使用 * 注意 在 mysql 的 Dockerfile 内 定义了 VOLUME ["var/ ...
- docker 数据持久化
confluence #!/bin/bash docker run \ --name confluence \ --volume "$PWD/data/opt":/opt \ -- ...
- 23. docker 数据持久化 bind mounting
1. bind mounting 和 data volume 的区别 data volume 需要在 Dockerfile 定义 Volume bind mounting 只需要 -v 指明 容器外部 ...
- Docker namespace,cgroup,镜像构建,数据持久化及Harbor安装、高可用配置
1.Docker namespace 1.1 namespace介绍 namespace是Linux提供的用于分离进程树.网络接口.挂载点以及进程间通信等资源的方法.可以使运行在同一台机器上的不同服务 ...
随机推荐
- dotnet core 不自动从 https 到 http 的 302 重定向
本文记录一个已知问题,或者准确来说是设计如此的行为,在 dotnet core 下,无论是 dotnet core 3.1 还是 dotnet 5 或 dotnet 6 或 dotnet 7 等,如果 ...
- Jmeter-线程组下篇
线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要.线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下. 可以将线程组视为一个虚拟用户池,其中每个 ...
- golang计时器
timer 计时器 用于在指定的Duration类型时间后调用函数或计算表达式. 如果只是想指定时间之后执行,使用time.Sleep() 使用NewTimer(),可以返回的Timer类型在计时器到 ...
- Linux 开启防火墙端口策略
1. 安装防火墙 yum install firewalld systemd -y 2. 手动开放防火墙端口 查看防火墙全部设置 firewall-cmd --list-all 若防火墙服务未启动可执 ...
- C 语言编程 — 高级数据类型 — 共用体
目录 文章目录 目录 前文列表 共用体 定义共用体 访问共用体成员 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本 ...
- 基于webapi的websocket聊天室(三)
上一篇处理了超长消息的问题.我们的应用到目前为止还是单聊天室,这一篇就要处理的多聊天室的问题. 思路 第一个问题,怎么访问不同聊天室 这个可以采用路由参数来解决.我把路由设计成这样/chat/{roo ...
- .NET8 Identity Register
分享给需要帮助的人:记一次 IdentityAPI 中注册的源码解读:设置用户账户为未验证状态,以及除此之外更安全的做法: 延迟用户创建.包含了对优缺点的说明,以及适用场景. 在ASP.NET 8 I ...
- feign入门
.net core: feign.net是一个spring cloud feign组件的c#移植版 https://github.com/daixinkai/feign.net 在.net core ...
- winform——windows 服务的安装 卸载 启动 停止
安装服务和卸载服务采用process启动命令行的方式.启动服务和停止服务用到了 System.ServiceProcess.ServiceController这个类. 程序是这样运行的,首先启动服 ...
- nginx对称加密算法和非对称加密算法nginx证书配置
对称加密算法 对称加密性能更好 对称加密: 客户端和服务器之间的通信数据是通过对称加密算法进行加密,对称加密是在加密和解密的过程中使用同一个私钥进行加密和解密,而且加密算法是公开的,所以对称加密中的私 ...