通过命令行在 Docker 中更改 --commit CMD 时出错

Posted

技术标签:

【中文标题】通过命令行在 Docker 中更改 --commit CMD 时出错【英文标题】:Error in --commit CMD Change in Docker via command line 【发布时间】:2021-11-01 22:03:15 【问题描述】:

我正在尝试将 spring boot java .jar 文件放入 openJDK 的 Image 中并在 docker 中提交更改,但 docker 命令似乎不起作用

我正在关注这篇文章的步骤:https://dzone.com/articles/docker-tutorial-for-beginners-with-java-and-spring

docker 期望哪个参数,我没有在命令中给出

docker container commit --change='CMD ["java","-jar","/tmp/mytroubleartifact-0.jar"]' upbeat_brahmagupta a-repo-name-of-choice/some-app-name:tagname2

【问题讨论】:

您以这种方式创建的图像将无法重现。如果 JVM 中存在严重的安全问题,并且您需要升级基础映像,您会记得一年后这个确切的 docker commit 命令吗?最好创建一个 Dockerfile 并将其与您的应用程序一起签入到您的源代码树中。 【参考方案1】:

问题在于撇号 ' 您应该使用撇号s(复数形式 - 也称为引号s"

这个命令似乎对我有用

(无需代表您进行更改):

docker container commit --change="CMD ['java','-jar','/tmp/mytroubleartifact-0.jar']" upbeat_brahmagupta a-repo-name-of-choice/some-app-name:tagname2

虽然我看到其他人为我使用了一个撇号,但它也不适用于您的情况。 docker docs example 也不适用于仅复制 --change 部分,使用两个选项(-c--change)并且仅使用其中一个选项,仅使用双引号就可以了,但不完全确定为什么。 (尝试替换名称,使它们更短¯_(ツ)_/¯)

docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a svendowideit/testimage:version4

感谢这些帖子的工作示例:

https://adamtheautomator.com/docker-commit/ https://docs.oracle.com/cd/E37670_01/E75728/html/ch04s18.html

【讨论】:

感谢将撇号 (') 更改为引号 (") docker container commit --change="CMD ["java","-jar","/tmp/mytroubleartifact-0.jar "]" xenodochial_goldwasser a-repo-name-of-choice/some-app-name:tagname2 很高兴听到它有帮助?

以上是关于通过命令行在 Docker 中更改 --commit CMD 时出错的主要内容,如果未能解决你的问题,请参考以下文章

markdown 如何通过命令行在Linux或macOS中更改MySQL root密码

从命令行在脚本中运行的 Docker 命令

如何通过命令行在本地更新存储库[复制]

从命令行在CMake项目上设置MSVC运行时

通过命令行在 Git 提交消息中使用感叹号

通过命令行在 Visual Studio 中编译单个独立文件