wordpress 新网站 代码,seo是什么牌子,小内存vps WordPress,帝国cms登录网站一、
容器数据持久化的概念
docker做为容器化的领先技术#xff0c;现在广泛应用于各个平台中#xff0c;但不知道什么时候有一个说法是docker并不适用容器化数据库#xff0c;说容器化的数据库性能不稳定#xff0c;其实#xff0c;这个说法主要是因为对docker的数据持…一、
容器数据持久化的概念
docker做为容器化的领先技术现在广泛应用于各个平台中但不知道什么时候有一个说法是docker并不适用容器化数据库说容器化的数据库性能不稳定其实这个说法主要是因为对docker的数据持久化不了解所导致的数据库持久化做好了是完全可以在生产环境使用容器化的数据库的
在容器层的 UnionFS联合文件系统中对文件/目录的任何修改无论是手工修改还是
容器在运行过程中的修改在该容器丢失或被删除后这些修改将全部丢失。即这些修改是无
法保存下来的。若要保存下来这些修改通常有两种方式
定制镜像持久化将这个修改过的容器生成一个新的镜像让这些修改变为只读的镜像
数据卷持久化将这些修改通过数据卷同步到宿主机
容器数据持久化主要解决的问题如下
数据丢失在默认情况下Docker容器内部产生的数据存储在其自身的存储层上。当容器停止运行或被删除时与该容器关联的存储层也会被清理这意味着所有在容器运行期间生成或修改的数据都将永久丢失。迁移和备份困难由于容器存储层与容器生命周期紧密相连如果需要将数据从一个容器移动到另一个容器或者需要对数据进行备份和恢复操作会非常复杂且不可靠。多容器共享数据在实际应用中可能需要多个容器之间共享某些数据例如数据库服务和Web服务器之间。但是容器间的直接文件系统交互并不方便也不利于容器的独立性和可移植性。性能考量容器存储层通常是通过联合文件系统如AUFS、OverlayFS等实现的频繁写入这类文件系统的性能可能不如直接写入宿主机的磁盘。
二、
dockerdocker-compose 部署Oracle11g数据库数据持久化
1、镜像下载
本次实验是在VMware虚拟机上实现的docker环境搭建部署就不在这里废话了镜像适用的是阿里云的镜像
[rootcentos1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 8 years ago 6.85GB镜像pull命令为
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2、
docker和docker-compose的版本说明
docker的版本是 20.10.7 docker-compose的版本是1.25.1 需要说明的是docker版本应该为至少19版本其它没有要求 [rootcentos1 ~]# docker version
Client:Version: 20.10.7API version: 1.41Go version: go1.13.15Git commit: f0df350Built: Wed Jun 2 11:51:04 2021OS/Arch: linux/amd64Context: defaultExperimental: trueServer: Docker Engine - CommunityEngine:Version: 20.10.7API version: 1.41 (minimum version 1.12)Go version: go1.13.15Git commit: b0f5bc3Built: Wed Jun 2 11:55:29 2021OS/Arch: linux/amd64Experimental: falsecontainerd:Version: v1.4.6GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285drunc:Version: 1.0.0-rc95GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7docker-init:Version: 0.19.0GitCommit: de40ad0
[rootcentos1 ~]# docker-compose version
docker-compose version 1.25.1, build a82fef07
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.0l 10 Sep 20193、
docker-compose的编排文件
这里需要说明该名字是固定的如果不是docker-compose.yml 重启停止oracle数据库需要指定配置文件十分不方便
cat docker-compose.yml EOF
version: 3.1
services:oracle:image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latestrestart: alwayscontainer_name: ogports:- 15211:1521
EOF编排文件里没有写volume这个时候先启动容器后面在拷贝文件到宿主机目录
启动容器命令为
docker-compose up -d
4、
将容器中的文件复制到宿主机相关目录内
确保容器状态是正确的 宿主机创建相关用户
/etc/passwd 文件末尾添加 oracle:x:500:500::/home/oracle:/bin/bash
/etc/group 文件末尾添加 oinstall:x:500: 最为关键的一步复制需要持久化的文件到宿主机复制文件的时候容器必须是正常启动的
mkdir -p /data/oracle/oradata
docker cp og:/home/oracle/app/oracle/oradata/helowin /data/oracle/oradata/test_data
docker cp og:/home/oracle/app/oracle/flash_recovery_area/helowin /data/oracle/oradata/flash_recovery_area
chown -Rf oracle:oinstall /data/oracle/这里说明一下cp的左边是容器的目录空格后面的是宿主机的目录宿主机的目录不需要自己创建会自动完成文件很快就拷贝完成完成后赋予相关用户权限
5、修改编排文件并重新应用编排文件 cat docker-compose.yml EOF
version: 3.1
services:oracle:image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latestrestart: alwayscontainer_name: ogvolumes:- /data/oracle/oradata/test_data:/home/oracle/app/oracle/oradata/helowin- /data/oracle/oradata/flash_recovery_area:/home/oracle/app/oracle/flash_recovery_area/helowinports:- 15211:1521
EOF 通过上面修改的编排文件再次启动容器这里需要先关闭在启动不能使用参数restart直接重启哦
[rootcentos1 ~]# docker-compose down
Stopping og ... done
Removing og ... done
Removing network root_default
[rootcentos1 ~]# docker-compose up -d
Creating network root_default with the default driver
Creating og ... done应用新编排文件后查看容器日志日志里面必须没有任何error
rootcentos1 ~]# docker logs -f og
/home/oracle/app/oracle/product/11.2.0/dbhome_2
Processing Database instance helowin: log file /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log
Fixed Size 2213776 bytes
Variable Size 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
Database mounted.
Database opened.
SQL Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart: Database instance helowin warm started.
tail: unrecognized file system type 0x794c7630 for /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log. Reverting to polling.现在Oracle数据库的容器持久化就做好了使用工具连接也没有任何问题了 sid和服务名都是helowin随便用哪个都可以sys用户的密码是oracle端口由于映射的是15211因此上面必须这么填写角色是sysdba
SH这个用户是锁定状态把锁定去掉后在重启Oracle容器可以看到锁定仍然是去掉的说明持久化成功了 总结
关键其实就两步第一个是不带volume启动容器容器正常工作第二步拷贝容器内文件到宿主机赋予权限然后带上volume先down容器在up容器拷贝文件决定了持久化工作是否正常