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