如何在停靠时修改docker容器中的启动脚本?

时间:2015-05-06 17:11:23

标签: docker boot2docker

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

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

用于构建容器的Dockerfile:

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

我可以编辑文件start.sh而无需重建容器。

我的猜测是

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

理想情况下,您可以通过Dockerfile执行所有操作,以便您将来可以通过重现方式重建图像。当包或依赖项需要更新时,您将在六个月内想要它。你已经知道如何做到这一点,所以我假设你正在寻找快速黑客。

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

  1. docker run你的形象让它成为一个容器
  2. docker exec -it CONTAINER /bin/bash(或等效的shell)进入正在运行的容器。在容器中编辑您的文件。退出(通常为ctrl-D)。
    • 这种编辑方法意味着您不必在主机上找到容器的文件系统,也无需协商在那里编辑文件的权限。您已经进入文件系统。
    • 但是修改后的文件的唯一副本位于您的容器内,因此没有其他人可以重现您的确切行为。
  3. docker commit CONTAINER REPOSITORY:TAG
  4. docker run REPOSITORY:TAG