jenkins与docker工人

我的问题是:

docker run -d -p 8080:8080 asd/jenkins # everything's ok # made changes at jenkins docker commit container_with_jenkins # comitted docker run -d -p 8080:8080 image_from_container_with_changes # => Error: create: No command specified 

我错过了什么吗?
如何处理docker的图像并保存容器内的变化?

当您提交图像时,它不会从其父图像inheritanceCMD。 所以当你启动一个基于新镜像的容器时,你需要提供一个运行命令。

 docker run -d image_from_container_with_changes java -jar /var/lib/jenkins/jenkins.war 

运行命令当然取决于你的具体安装。

Jenkins将它的configuration存储在一个目录中,例如/root/.jenkins。 我build议的是在主机上创build一个目录并将其作为一个卷连接:

 docker run -v {absolute_path_to_jenkins_dir}:/root/.jenkins -d asd/jenkins 

如果你用同样的方式启动一个新的容器,它将会有相同的工作等等。如果你做了一些更改,进入这个目录(我不知道哪个插件或更新安装在哪里),你仍然可能想要做一个新的形象。 在这种情况下,当您提交容器指定新的configuration时,请使用-run选项,

 docker commit -run='{"Cmd": ["java", "-jar", "/var/lib/jenkins/jenkins.war"]}' abc1234d