docker不保留状态

时间:2017-12-13 19:40:12

标签: docker jenkins

我做了docker pull jenkins:latest

然后我运行了容器:docker run --name jenk -p 8080:8080 jenkins

我在jenkins中设置了所有的工作,配置等。之后我做出了改变:

docker commit jenk myrepo/jenkins

当我现在拉动图像并启动它时:docker run myrepo/jenkins所有配置都丢失了。我认为它会保留它。

2 个答案:

答案 0 :(得分:1)

您还需要推送到您的(远程)存储库,然后再重新启动它。提交仅将状态保存到本地驱动器。拉总是会进入存储库。

一些免费的建议:

  • 最好通过Dockerfile进行更改,通过扩展jenkins:latest并添加自己的更改。这使得它更易于维护和更改。

问题:

您是在图像内部还是在已安装的卷上执行此操作? 根据{{​​3}},不会包含这些设置

  

提交操作不包括容器内安装的卷中包含的任何数据。

玩得开心: - )

答案 1 :(得分:1)

docker commit documentation:

中所述
  

提交操作不包含卷中包含的任何数据   安装在容器内。

jenkins图像将jenkins称为卷VOLUME /var/jenkins_home。卷容器创建的所有配置和作业。因此,当您提交容器时,所有这些配置都不会保留在 提交图像。

如果您在同一台计算机上运行新映像,则可以使用旧容器中的jenkins_home卷并获取完全相同的jenkins实例:

docker volume ls  //To determine the old container volume name
docker run -v <old-volume-name>:/var/jenkins_home -p 8080:8080 myrepo/jenkins

如果您正在新机器上运行提交的内容:

docker cp <old-container>:/var/jenkins_home ./jenkins_home

现在将jenkins_home文件夹复制到新机器上,然后将其安装到新容器上:

docker run -v ./jenkins_home:/var/jenkins_home -p 8080:8080 myrepo/jenkins