docker 容器停止时如何修改启动脚本?

How do I modify a startup script in a docker container when it is stopped?

我们有一个 docker 容器,我 运行 作为:

docker run --name myname -e PROPERTY1=VALUE1   -d image/name 

用于构建容器的 Dockerfile:

ADD start.sh /
CMD ["/bin/bash","/start.sh"]

我可以在不重建容器的情况下编辑文件start.sh吗?

我的猜测是

如何在容器停止时编辑文件?

谢谢。

如果您修改 start.sh 脚本,您应该重建图像。重建图像将比第一次快得多,因为 docker 能够检测到修改并仅重建必要的部分。

您可以按照您概述的步骤进行操作,但它需要准确了解容器文件系统在主机上的位置,并确保您拥有修改它的正确权限。这不是我建议的路径。

理想情况下,您会通过 Dockerfile 完成所有操作,以便您在将来有一种可重现的方式来重建映像。当包或依赖项需要更新时,您会希望在六个月内这样做。您已经知道该怎么做,所以我假设您正在寻找快速破解方法。

Quick Hack(不可重现的结果)

  1. docker run 您的图像以使其作为容器运行
  2. docker exec -it CONTAINER /bin/bash(或等效的 shell)进入 运行 容器。在容器中编辑您的文件。退出(通常是 ctrl-D)。
    • 这种编辑方法意味着您不必在主机上找到容器的文件系统或协商在那里编辑文件的权限。您已经进入文件系统。
    • 但是修改文件的唯一副本在您的容器中,因此其他人无法完全复制您所做的。
  3. docker commit CONTAINER REPOSITORY:TAG
  4. docker run REPOSITORY:TAG