首页 > 解决方案 > docker 容器会即时获取代码更改吗?

问题描述

我已经启动并运行了我的 docker 容器。有一个容器运行一些 python 代码,我发现它导致了一些错误。我想在该特定容器内的 python 脚本中添加一些代码行(主要是更多日志)。

我只想通过 进入容器docker exec -ti container_name bash并开始编辑代码nano my_python_script.py。正在运行的容器是否会即时自动获取这些更改?

或者我需要做些什么才能使这些更改生效,即打印新的日志记录信息?

标签: docker

解决方案


关于 docker 容器的几个事实:

  1. Docker 容器的生命周期与它运行的进程通常一样长。
  2. Docker 容器是不可变的,因此无论您在容器本身的文件系统中所做的任何更改都不会在容器重新启动后继续存在(我不是在谈论卷,它是更高级的东西)

基于这些事实:

问题基本上归结为my_python_script.py您“即时”所做的更改是否需要重新启动python进程。这实际上取决于您运行 python 的内容/方式。

如果它需要重新启动 - 那么不,您将无法看到日志。重新启动也无济于事,因为事实上“2” - 您将丢失更改(在这种情况下会打印额外的日志)。

如果 Python 能够动态地重新加载脚本并在同一进程中运行它(无需重新启动容器),那么您可以这样做。


推荐阅读