目次
1. VMware假造机的快照备份
1.1 VMware本机的快照备份
1.2 VMware快照备份到另一电脑
2. Docker知识点
2.1 Docker镜像和容器的关系
2.2 Docker的存储卷
2.3 Docker下令简介
2.4 删除Anylink镜像
3. Docker备份和规复
3.1 确定要回滚的容器和版本
3.2 备份当前容器(可选)
3.3 备份存储卷
3.4 克制并删除当前容器
3.5 获取指定版本的镜像
3.6 运行指定版本的容器
3.7 验证回滚和留意事项
1. VMware假造机的快照备份
1.1 VMware本机的快照备份
VMware假造机的快照功能,应该能手动把全部东西都备份和规复,包罗Docker的镜像,假如是数据出题目,回滚到某个版本,应该手动把数据备份然后快照就行了,不外磁盘空间占用有点大。(假造机的备份与规复也完成了Docker容器和存储卷的备份与规复)
下面是步调
将上面文件当成快照1生存,然后在此底子添加以下文件(圈出来的都是新加的,除了anylink镜像)
规复到快照1
数据完全规复到初始状态:
再规复到快照2:
- 创建快照:在VMware假造机安装或设置过程中,特别是在举行告急更改之前,应创建假造机的快照。如许,假如后续出现题目,可以从快照点快速规复到之前的状态。
- 规复快照:在VMware vSphere Client或VMware Workstation中,找到假造机并选择“快照”选项。从快照列表中选择要规复的点,然后点击“规复到此状态”或雷同选项。
留意:快照固然方便,但过多或过旧的快照大概会占用大量磁盘空间并影响性能。因此,发起定期清算不再必要的快照。
1.2 VMware快照备份到另一电脑
VMware假造机快照生存位置应该就是生存在Windows电脑的磁盘上:
可以通过以下步调把VMware快照备份到另一电脑
方法一:利用克隆功能(实用于VMware Workstation)
- 关闭假造机:起首,确保目的假造机已关闭。
- 克隆假造机:在VMware Workstation中,选中目的假造机,点击上方工具栏中的“假造机”>“管理”>“克隆”。
- 选择快照举行克隆:在克隆向导中,选择“现有快照(仅限关闭的假造机)”,然后选择你想要克隆的快照。
- 设置克隆选项:选择克隆范例(链接克隆或完备克隆),并设置新假造机的名称和目的位置。
- 完成克隆:按照向导完成克隆过程。克隆完成后,你可以在另一台电脑上打开VMware Workstation,并导入克隆得到的假造机文件(.vmx文件)。
方法二:手动复制假造机文件(实用于VMware ESXi和Workstation)
- 关闭假造机:确保目的假造机已关闭。
- 访问数据存储:利用vSphere Web Client(对于ESXi)或Windows文件资源管理器(对于Workstation)访问假造机地点的数据存储。
- 复制假造机文件:找到假造机文件夹,复制此中的全部文件(包罗快照文件)。
- 转移文件:将复制的文件转移到另一台电脑上的相应位置。
- 注册假造机:在另一台电脑上,利用vSphere Web Client(对于ESXi)或VMware Workstation(对于Workstation)注册新的假造机。选择复制过来的假造机文件夹中的.vmx文件举行注册。
- 规复快照:注册完成后,打开假造机电源,并根据必要规复特定的快照。
2. Docker知识点
2.1 Docker镜像和容器的关系
Docker镜像相当于C++/Java的“类”,容器是“对象”,是镜像的运行实体,是一个应用进程。如下图一个镜像可以启动多个容器,Docker daemon里放着存储卷,是存储在本机磁盘的。
2.2 Docker的存储卷
按照上面的类比(面向对象语言的“类和对象”,“镜像和容器很好明白”,现在相识下“存储卷”)
存储卷就是将宿主机的当地文件体系中存在的某个目次直接与容器内部的文件体系上的某一目次创建绑定关系(好比Anylink项目 conf 里的文件)。这就意味着,在容器中的这个目次下写入数据时(如anylink网页操纵就会往容器目次写数据),容器会将其内容直接写入到宿主机上与此容器创建了绑定关系的目次。在宿主机上的这个与容器形成绑定关系的目次被称作存储卷。卷的本质是文件大概目次。
存储卷的特性:
- 可以绕过默认的连合文件体系,直接以文件或目次的情势存在于宿主机上。
- 宿主机的/data/web 目次与容器中的/container/data/web 目次绑定关系,然后容器中的 进程向这个目次中写数据时,是直接写在宿主机的目次上的,绕过容器文件体系与宿 主机的文件体系创建关联关系,使得可以在宿主机和容器内共享数据库内容,让容器直接访问宿主机中的内容,也可以宿主机向容器写入内容,容器和宿主机的数据读写是同步的。
- 容器烧毁了,容器指定的存储卷不会烧毁。
为什么必要存储卷?
- 数据丢失题目,容器按照业务范例,总体可以分为两类: ①无状态的(数据不必要被恒久化)②有状态的(数据必要被恒久化) 显然,容器更善于无状态应用。由于未恒久化数据的容器根目次的生命周期与容器的生命周期一样,容器文件体系的本质是在镜像层上面创建的读写层,运行中的容器对任何文件的修改都存在于该读写层,当容器被删除时,容器中的读写层也会随之消散。 固然容器盼望全部的业务都只管保持无状态,如许容器就可以开箱即用,而且可以恣意调理,但实际业务总是有各种必要数据恒久化的场景,好比 MySQL、Kafka 等有状 态的业务。因此为了办理有状态业务的需求,Docker 提出了卷(Volume)的概念。
- 性能题目,UnionFS 对于修改删除等,一样平常服从非常低,假如对一于 I/O 要求比力高的应用,如 redis 在实现持化存储时,是在底层存储时的性能要求比力高。
- 宿主机和容器互访不方便,宿主机访问容器,大概容器访问要通过 docker cp 来完成,应用很难操纵。
- 容器和容器共享不方便。
存储卷的利用。
存储卷有三种,这里只先容最常用的绑定卷。
-v 参数创建卷
2.3 Docker下令简介
docker 的常用下令:
- #镜像命令
- docker images:列出所有镜像
- docker search [image]:搜索 Docker 镜像
- docker pull [image]:拉取指定镜像
- docker rmi [image]:删除指定镜像
- #容器命令
- docker ps:列出当前所有正在运行的容器
- docker ps -a:列出所有容器,包括已经停止的容器
- docker create [image]:创建一个新的容器,但不启动它
- docker start [container]:启动一个容器
- docker stop [container]:停止一个容器
- docker rm [container]:删除一个容器
- docker exec -it [container] [command]:在运行中的容器中执行命令
- #其他命令
- docker info:显示 Docker 系统信息
- docker version:显示 Docker 版本信息
- docker logs [container]:查看容器的日志
 - docker network ls:列出 Docker 网络
- docker network create [network]:创建一个新的 Docker 网络
- docker network connect [network] [container]:将容器连接到指定的 Docker 网络
- docker network disconnect [network] [container]:将容器从指定的 Docker 网络中断开连接
复制代码 2.4 删除Anylink镜像
- 克制并删除利用该镜像的容器:
起首,你可以克制并删除正在利用这个镜像的容器。利用以下下令:
| docker stop 05d3701e38ad | | docker rm 05d3701e38ad | 然后,你可以实验再次删除镜像:
| docker rmi bjdgyc/anylink | 大概,假如你知道镜像简直切 ID 或部门名称,也可以利用:
- 利用 --force 或 -f 选项欺压删除镜像:
假如你确定要删除镜像,纵然它正在被利用,你也可以利用 --force 或 -f 选项来欺压删除。但请留意,这大概会导致利用该镜像的容器无法正常工作。
| docker rmi -f bjdgyc/anylink | 大概,假如你知道镜像简直切 ID:
| docker rmi -f cfd0134cbd8a |
- 查抄并删除全部利用该镜像的容器:
假如你不确定哪些容器正在利用这个镜像,你可以利用以下下令来查找全部利用该镜像的容器,并逐一克制和删除它们:
| docker ps -a --filter reference=bjdgyc/anylink | 这个下令会列出全部利用 bjdgyc/anylink 镜像的容器。然后,你可以按照上面的方法克制并删除这些容器。
选择哪种方法取决于你的具体需求和你是否乐意冒删除正在运行的容器的风险。通常,克制并删除容器是最安全的方法。
3. Docker备份和规复
当Docker数据出现题目时,回滚到某个版本通常涉及Docker镜像和容器的管理。以下是一系列步调,可以资助你回滚Docker数据到某个特定版本:
3.1 确定要回滚的容器和版本
起首,你必要确定哪个容器出现了题目,以及你想要回滚到的具体版本,(版本没有厘革就不消标签)。这通常必要你事先已经为Docker镜像打上了差异的标签(tag),每个标签对应一个差异的版本。
3.2 备份当前容器(可选)
在回滚之前,剧烈发起备份当前的容器状态,以防万一回滚后的版本不符合预期,可以规复到当前状态。你可以利用docker commit下令将容器的当前状态生存为一个新的镜像。
| docker commit <container_id> <new_image_name>:<tag>
| 备份演示:(备份成1.5,下下张图片是Anylink网页状态,四个组)
添加一组测试组后备份为标签1.6:(此时备份的时间是五个组)
3.3 备份存储卷
在根目次拷贝备份/conf文件为/conf2:
3.4 克制并删除当前容器
在回滚之前,你必要克制并删除正在运行的容器。这可以通过docker stop和docker rm下令来完成。
| docker stop <container_id> | | docker rm <container_id> | 现在克制正在运行的Anylink容器:
3.5 获取指定版本的镜像
假如你已经有一个带有特定版本标签的镜像,你可以直接拉取(假如镜像不在当地的话)或利用该镜像。假如镜像不在当地且你也没有拉取权限,你大概必要从镜像堆栈中拉取。
| docker pull <image_name>:<version> | 现在镜像在当地了,就不消操纵了。
3.6 运行指定版本的容器
一旦你有了指定版本的镜像,你就可以利用docker run下令来启动一个新的容器,该容器将基于你选择的版本运行。
| docker run -d <image_name>:<version> | 假如你必要挂载数据卷或设置其他启动参数,也可以在docker run下令中指定。
这里的 run 下令应该只用把宿主机的conf改名字就行,app/conf不消改,现在规复到有测试组7的数据,此时假设出了题目,此时conf是存在的,大概之前某一时间段把conf拷贝备份成了一个目次(好比前面的conf2),也可以规复到当时目次的状态,
现在在anylink创建一个题目组代表出题目了,(创建的测试组3_conf可以明白为正常的创建,大概现在先无视):
此时可以删除容器,大概是容器出题目主动删除,然后用之前备份的conf2文件再起一个容器:
- docker run -d \
- --name anylink \
- --restart always \
- --privileged=true \
- -p 55555:443/tcp \
- -p 55555:443/udp \
- -p 8800:8800/tcp \
- -p 8800:8800/udp \
- -v /conf2:/app/conf \
- bjdgyc/anylink -c=/app/conf/server.toml
复制代码
此时就乐成规复到了没有题目组,即没有出题目的状态:
3.7 验证回滚和留意事项
启动新容器后,你应该验证回滚是否乐成。这通常包罗查抄容器的运行状态、应用步伐的日志 以及数据是否按预期规复。可以通过docker inspect 镜像名/ID来验证。
留意事项
假如是以下指令,就会规复成初始状态了。由于app/conf2是本来不存在的:
- 数据恒久化:假如容器中的数据很告急,你应该在创建容器时利用数据卷(volume)或绑定挂载(bind mount)来恒久化数据。如许,纵然容器被删除,数据也会生存在宿主机上,并可以在新容器中重新挂载。
- 版本控制:良好的版本控制实践是克制数据丢失和快速规复的关键。为Docker镜像打上清楚的版本标签,并在每次巨大更改后生存新的镜像版本。
- 备份战略:定期备份Docker镜像和容器数据是确保数据安全的告急步伐。你可以利用Docker提供的工具或第三方备份办理方案来订定和实行备份战略。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |