如何在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
以便将来可以重新生成映像。 你需要在六个月内需要更新软件包或依赖关系时。 你已经知道如何做到这一点,所以我认为你正在寻找一个快速的黑客。
快速黑客(不可重复的结果)
-
docker run
你的图像,把它作为一个容器 -
docker exec -it CONTAINER /bin/bash
(或等价的shell)进入正在运行的容器。 在容器中编辑您的文件。 退出(通常按Ctrl-D)。- 这种编辑方法意味着您不必在主机上find容器的文件系统,或者在这里协商编辑文件的权限。 您已经在文件系统中。
- 但修改后的文件的唯一副本是在你的容器内,所以没有其他人可以重现你所做的。
-
docker commit CONTAINER REPOSITORY:TAG
-
docker run REPOSITORY:TAG
如果你修改start.sh
脚本,你应该重build图像。 重build图像将比第一次更快,因为docker是能够检测到修改,并只重build必要的部分。