Docker镜像升级保留数据(volume)
2021-05-10 本文已影响0人
水妖
原理:修改容器配置文件中"MountPoints"节点
本例:
镜像:tomcat
挂载卷:/var/lib/docker/volumes/9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b/_data
卷指向:/usr/local/tomcat/webapps
1. 查询相关配置信息
docker inspect tomcat
1.1 容器路径
#找到
...
"ResolvConfPath": "/var/lib/docker/containers/608ecbe281067b1c41454a0ada8f1be4e43c5b9dcd46f94ccce9da8613bfef2b/resolv.conf"
...
截取得到容器路径:
/var/lib/docker/containers/608ecbe281067b1c41454a0ada8f1be4e43c5b9dcd46f94ccce9da8613bfef2b
1.2 挂载信息
配置文件路径:(容器路径/config.v2.json)
#挂载卷id: 9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b
...
"MountPoints":{
"/usr/local/tomcat/webapps":{
"Source":"/var/lib/docker/volumes/9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b/_data",
"Destination":"/usr/local/tomcat/webapps",
"RW":true,
"Name":"9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b",
"Driver":"local",
"Type":"volume",
"Relabel":"z",
"Spec":{
"Type":"volume",
"Source":"9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b",
"Target":"/usr/local/tomcat/webapps"
},
"SkipMountpointCreation":false
}
}
...
2. 停止并删除tomcat容器
docker stop tomcat
docker rm tomcat
3. 获取所需最新镜像
4. 创建新的容器
docker run --name tomcat -it -p 80:8080 tomcat
# 说明:
# run : 运行
# --name tomcat : 命名为tomcat
# -p 80:8080 : 端口
# tomcat : 源镜像
5. 停止docker服务
service docker stop
6. 修改新tomcat容器的配置文件
(通过步骤1获取新容器配置文件路径)
...
"MountPoints":{
}
...
修改为 (原容器的配置:1.2 挂载信息拷过来)
...
"MountPoints":{
"/usr/local/tomcat/webapps":{
"Source":"/var/lib/docker/volumes/9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b/_data",
"Destination":"/usr/local/tomcat/webapps",
"RW":true,
"Name":"9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b",
"Driver":"local",
"Type":"volume",
"Relabel":"z",
"Spec":{
"Type":"volume",
"Source":"9d5a75bf40d6239c7279ca0e79716fa3a6197aa78d9e6b8265b6879a1ef6bf6b",
"Target":"/usr/local/tomcat/webapps"
},
"SkipMountpointCreation":false
}
}
...
7. docker服务重启
service docker start
8. tomcat启动
docker start tomcat
说明:
修改容器的配置文件需要重启docker服务,如:
config.v2.json
hostconfig.json