怎么在自己的网站上推广业务,建网站商城平台,商家管理系统,wordpress主机安装Docker容器数据恢复 1 创建mongo数据库时未挂载数据到宿主机2 查找数据卷位置3 将容器在宿主机上的数据复制到指定目录下4 修改docker-compose并挂载数据#xff08;注意端口#xff09;5 重新运行新容器 以mongodb8.0.3为例。 1 创建mongo数据库时未挂载数据到宿主机
versi… Docker容器数据恢复 1 创建mongo数据库时未挂载数据到宿主机2 查找数据卷位置3 将容器在宿主机上的数据复制到指定目录下4 修改docker-compose并挂载数据注意端口5 重新运行新容器 以mongodb8.0.3为例。 1 创建mongo数据库时未挂载数据到宿主机
version: 3.1
services:mongo_test:container_name: mongo_testrestart: alwaysimage: mongo:8.0.3ports:- 17017:27017volumes:- /etc/localtime:/etc/localtime:ro # 将外边时间直接挂载到容器内部权限只读#- /opt/soft/mongo/mongo_test/data:/data/db#- /opt/soft/mongo/mongo_test/conf:/data/configdb- /opt/soft/mongo/keyfile.key:/data/configdb/keyfile.keyenvironment:TZ: Asia/Shanghai # 设置时区为上海时区MONGO_INITDB_ROOT_USERNAME: rootMONGO_INITDB_ROOT_PASSWORD: 123456logging:driver: json-fileoptions:max-size: 10mmax-file: 5networks:- mongonetworks:mongo:driver: bridge2 查找数据卷位置
数据卷通常存储在/var/lib/docker/volumes/目录下。每个数据卷都有一个对应的文件夹。可以使用docker volume ls列出所有容器使用的数据卷然后使用docker inspect volume_name查看特定数据卷的详细信息找到其在宿主机上的存储路径。
[rootnode01 mongo]# docker volume ls
DRIVER VOLUME NAME
local 93bb1c65b0329a2050c29f2ef35eee4761a86029f1222e4f9df7d332a2bb6381
local f789fdd5ef3c229c7c1cb19a1478a7aba7416490191a563572eaf010f12317a2[rootnode01 mongo]# ls /var/lib/docker/volumes/
93bb1c65b0329a2050c29f2ef35eee4761a86029f1222e4f9df7d332a2bb6381 backingFsBlockDev f789fdd5ef3c229c7c1cb19a1478a7aba7416490191a563572eaf010f12317a2 metadata.db可以发现宿主机上的两个目录正是docker容器使用的卷。
容器存在时可通过查看容器内数据默认的挂载找到对应关系
docker inspect mongo_testMounts: [{Type: bind,Source: /opt/soft/mongo/keyfile.key,Destination: /data/configdb/keyfile.key,Mode: rw,RW: true,Propagation: rprivate},{Type: volume,Name: f789fdd5ef3c229c7c1cb19a1478a7aba7416490191a563572eaf010f12317a2,Source: /var/lib/docker/volumes/f789fdd5ef3c229c7c1cb19a1478a7aba7416490191a563572eaf010f12317a2/_data,Destination: /data/configdb,Driver: local,Mode: ,RW: true,Propagation: },{Type: volume,Name: 93bb1c65b0329a2050c29f2ef35eee4761a86029f1222e4f9df7d332a2bb6381,Source: /var/lib/docker/volumes/93bb1c65b0329a2050c29f2ef35eee4761a86029f1222e4f9df7d332a2bb6381/_data,Destination: /data/db,Driver: local,Mode: ,RW: true,Propagation: },{Type: bind,Source: /etc/localtime,Destination: /etc/localtime,Mode: ro,RW: false,Propagation: rprivate}]如果容器不存在可创建一个不挂载文件的新容器从而分析已删除的原容器数据卷和宿主机上的卷积对应关系。
综上可以了解上述两个数据卷是容器mongo_test使用的且有如下对应关系
/var/lib/docker/volumes/f789fdd5ef3c229c7c1cb19a1478a7aba7416490191a563572eaf010f12317a2:/data/configdb/var/lib/docker/volumes/93bb1c65b0329a2050c29f2ef35eee4761a86029f1222e4f9df7d332a2bb6381:/data/db3 将容器在宿主机上的数据复制到指定目录下
mkdir -p /opt/soft/mongo/mongo_test/{conf,data}
chmod 777 /opt/soft/mongo/mongo_test/data
chmod 777 /opt/soft/mongo/mongo_test/confcp -R /var/lib/docker/volumes/f789fdd5ef3c229c7c1cb19a1478a7aba7416490191a563572eaf010f12317a2/_data/* /opt/soft/mongo/mongo_test/confcp -R /var/lib/docker/volumes/93bb1c65b0329a2050c29f2ef35eee4761a86029f1222e4f9df7d332a2bb6381/_data/* /opt/soft/mongo/mongo_test/data4 修改docker-compose并挂载数据注意端口
version: 3.1
services:mongo_test:container_name: mongo_testrestart: alwaysimage: mongo:8.0.3ports:- 17017:27017volumes:- /etc/localtime:/etc/localtime:ro # 将外边时间直接挂载到容器内部权限只读- /opt/soft/mongo/mongo_test/data:/data/db- /opt/soft/mongo/mongo_test/conf:/data/configdb- /opt/soft/mongo/keyfile.key:/data/configdb/keyfile.keyenvironment:TZ: Asia/Shanghai # 设置时区为上海时区MONGO_INITDB_ROOT_USERNAME: rootMONGO_INITDB_ROOT_PASSWORD: 123456logging:driver: json-fileoptions:max-size: 10mmax-file: 5networks:- mongonetworks:mongo:driver: bridge5 重新运行新容器
docker-compose up -d至此Docker容器数据恢复就完成了。