原容器存在以下问题
- 容器挂载在根节点,根节点容量不够;
- 容器没有绑定宿主机目录;
解决方式
- 使用ln -s 软连接达到对数据迁移
- 使用镜像方式,对目录重新绑定(绑定前需要把前容器数据导出到绑定目录下)
操作
- 首先对数据进行安全备份,确保失败后能正常使用!
- 软链接
- 提交镜像
- 生成新容器,要通过添加-v或者-mount来绑定当目标目录
软链接
// 停止服务
service docker stop
// 复制数据到新的存放路径:
cp -r /var/lib/docker/* /home/docker
// 备份
mv /var/lib/docker /home/dockerback
// 创建软连接
ln -s /home/docker /var/lib/docker
// 启动服务
service docker start
确认容器完整后可以删除备份
提交新的镜像
- 查看原容器id: docker ps -a
- 提交为镜像:docker commit 5a11422adeead imageName
生产新容器,要通过添加-v或者-mount来绑定当目标目录
- 导出原容器数据到要绑定的目录下
- 创建容器:
# pro
docker run --name web1-test-image-now-docker-1-2 \
--hostname web1 \
--restart=on-failure:10 \
-tid \
-p 18091:8097 \
-v /etc/timezone:/etc/timezone \
-v /etc/localtime:/etc/localtime \
-v /opt/web1/webapps.jar:/opt/webapps.jar \
--mount type=bind,src=/home/web1/logs/,dst=/opt/logs \
--mount type=bind,src=/home/web1/res/,dst=res/ \
--mount type=bind,src=/home/web1/,dst=/web1/ \
web1-image-2020-04-08 \
java -jar -Dspring.profiles.active=pro /opt/webapps.jar --spring.profiles.active=pro /
// 启动
docker start web1-test-image-now-docker-1-2
异常
迁移后无法启动容器,查看日志发现如下异常需要对迁移后的docker文件重新设置权限
docker-entrypoint.sh: line 46: cannot create temp file for here-document: Permission denied
// 对迁移的docker 文件添加权限
chmod -R 1777
网友评论