Jenkins with 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 的映像并将更改保存在容器中?

当您提交映像时,它不会从其父映像继承 CMD。因此,当您基于新映像启动容器时,需要提供 run 命令。

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

其中 run 命令当然取决于您的特定安装。

Jenkins 将其配置存储在目录中,例如/root/.jenkins。我建议在主机上创建一个目录并将其链接为卷:

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

如果您以相同的方式启动一个新容器,它将具有相同的作业等。如果您所做的更改确实进入了此目录(我不知道插件或更新的安装位置),您可能仍然想要创建一个新映像。在这种情况下,请在提交容器时使用 -run 选项来指定新配置,

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

最新更新