我的问题是:
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的图像并在容器中保存更改?
答案 0 :(得分:2)
提交图像时,它不会从其父图像继承CMD。因此,当您基于新映像启动容器时,需要提供运行命令。
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