docker不保存状态

我做了一个docker pull jenkins:latest

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

我在jenkins里设置了所有的工作,configuration等等。 之后我做了这个改变:

docker commit jenk myrepo/jenkins

当我现在拉图像并启动它: docker run myrepo/jenkins所有的configuration丢失。 我认为它会保存它。

您还需要送到您的(远程)存储库,然后才能再次将其拉出。 提交只会将状态保存到本地驱动器。 拉总是去存储库。

一些免费的build议:

  • 尽pipe通过扩展jenkins:latest并且添加你自己的修改,但通过Dockerfile来做这些修改通常是可取的。 这使得它更易于维护和改变。

题:

你是在图像中还是在装入的卷上这样做? 根据文档,这些设置将不包括在内

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

玩的开心 :-)

如docker commit文档中所述:

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

jenkins的形象宣布jenkins回家作为卷VOLUME /var/jenkins_home 。 卷容器创build了所有的configuration和作业。 因此,当您提交容器时,所有此configuration将不会保留在提交的图像中。

如果您在同一台机器上运行新的映像,则可以使用旧版容器中的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