现要将原本部署在服务器A上的Jenkins,以及运行jenkins的docker,一起迁移到服务器B上。
docker的重新安装、image的下载等,都不是问题。唯一的问题就是将原本docker中的volume data迁移到新服务器上。
我的做法是直接copy 原服务器中volume路径下的data到新服务器的相同路径下。
然而启动container不成功。
输入 docker event&
,在后台运行docker event,查看docker服务器中发生的事件。
再次启动container,发现container启动后就die了。但这里并不能看到原因。
使用docker logs <container-id>
查看container发生错误的原因。
注意,如果启动container时加上了
--rm
,则container关闭后会被删除,无法查看其log。用脚本启动container时,容易忽略此问题。
发现是使用volume时出现了权限问题:
Permission denied - /var/jenkins_home/copy_reference_file.log
volume路径的owner是root。
在github的 这个issue中找到了解决方法,即改变volume的owner。
sudo chown -R 1000:1000 volume-dir
将volume路径的owner改成uid=1000的普通用户,问题解决。
网友评论