gpt4 book ai didi

docker - 每当我(重新)启动容器时,是否有一种简单的方法可以自动运行脚本?

转载 作者:行者123 更新时间:2023-12-02 19:03:28 26 4
gpt4 key购买 nike

由于这个 Dockerfile 命令,我已经构建了一个 Docker 镜像,将一个脚本复制到镜像中,并在我运行镜像时自动执行它:
ENTRYPOINT ["/path/to/script/my_script.sh"]
(我必须在 RUN 命令中赋予它 chmod 权限才能使其真正运行)

现在,我对 Docker 很陌生,所以我不确定我想做的是否是好的做法:

我的基本想法是,当我想运行这个脚本时,我宁愿不必总是创建一个新容器,而是在我(重新)启动同一个容器时找到一种重新执行这个脚本的方法。

因此,不必键入 docker run my_image ,通过 docker (re)start container_from_image 完成相同的操作.

有没有一种简单的方法可以做到这一点,从资源节约的角度来看它是否有意义?

最佳答案

docker run相当便宜,典型的 Docker 模型通常是你总是从“白板”开始,然后从那里开始设置。 Docker 容器没有与 systemd 作业相同的一组 pre-start/post-start/... 钩子(Hook);只有 ENTRYPOINT/CMD 机制。你现在拥有的东西是正常的。

还请记住,您需要删除和重新创建容器以进行各种常规更改,其中最重要的长期是您必须删除容器才能更改底层镜像(因为已安装的软件或基础 Linux 发行版具有关键的你需要修复的错误)。我感觉像是一个围绕 docker build 构建的工作流/run/stop/rm是“最 Dockery”,并且非常适合不可 rebase 础架构模式。重复 docker stop/start因为工作流程感觉就像您正在尝试保持此特定容器的活力,并且在大多数情况下这无关紧要。

从技术的角度来看,您可以考虑容器环境及其文件系统,以及容器内部的主进程。 docker run实际上是 docker createdocker start .我从未注意到其中的“创建”一半需要大量时间,但是如果您正在执行诸如启动 JVM 或在启动时加载大型数据集之类的事情,那么“启动”一半将很慢,无论它是否与创建相结合一个新的容器。

关于docker - 每当我(重新)启动容器时,是否有一种简单的方法可以自动运行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56540037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com