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

我们有一个docker集装箱,我运行如下:

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

用于构build容器的Dockerfile:

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

我可以在不重build容器的情况下编辑文件start.sh。

我的猜测是

  • 停止容器
  • 编辑文件
  • 启动容器。

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

谢谢。

您可以按照您列出的步骤进行操作,但需要确切知道容器文件系统在主机上的位置,并确保您具有修改该容器的权限。 这不是我build议的path。

理想情况下,您可以通过Dockerfile完成所有Dockerfile以便将来可以重新生成映像。 你需要在六个月内需要更新软件包或依赖关系时。 你已经知道如何做到这一点,所以我认为你正在寻找一个快速的黑客。

快速黑客(不可重复的结果)

  1. docker run你的图像,把它作为一个容器
  2. docker exec -it CONTAINER /bin/bash (或等价的shell)进入正在运行的容器。 在容器中编辑您的文件。 退出(通常按Ctrl-D)。
    • 这种编辑方法意味着您不必在主机上find容器的文件系统,或者在这里协商编辑文件的权限。 您已经在文件系统中。
    • 修改后的文件的唯一副本是在你的容器内,所以没有其他人可以重现你所做的。
  3. docker commit CONTAINER REPOSITORY:TAG
  4. docker run REPOSITORY:TAG

如果你修改start.sh脚本,你应该重build图像。 重build图像将比第一次更快,因为docker是能够检测到修改,并只重build必要的部分。