保持 Docker 容器存活的正确方法是什么? (uWSGI相关)
What's the right way to keep a Docker container alive? (uWSGI related)
这里是菜鸟。所以我正在尝试使用 AWS + docker + nginx + uWSGI + flask 部署 Web 应用程序。据我所知,docker 容器必须有某种前台作业来保持自身存活,否则它会在执行后自行杀死。
我注意到 uWSGI 在不作为守护进程 运行 时是一个前台进程,因此我认为我可以使用它来保持我的容器活动。问题是,一旦它在前台 运行ning 就绝对没有办法回到 shell...(如果我在这里错了,请 lmk!)这意味着我无法执行每当我需要服务器维护时,我的容器和 运行 命令就在上面。
我见过这样的做法,您只保留一个虚拟处理 运行ning,每隔几秒左右回显一个简单的字符串。但这看起来有点笨拙——这真的是理想的方法吗?如果是,是否有比回显更好的虚拟进程想法,可以让我的控制台更干净一些?
提前致谢。
您可以使用 bash 进入每个 运行 容器:
docker exec -it container-name /bin/bash
Docker 图像是使用 Docker 文件创建的,在 Docker 文件中指定创建图像所需的步骤,您注意到 Docker 文件中的最后一条指令通常是 CMD
当你 运行 使用这个命令的图像 docker run image-name
docker 在容器中执行你在 CMD
中指定的命令,如果这个命令结束,你的容器停止。但是你可以用其他东西替换这个命令,比如 docker run -it image-name bash
这个命令给你一个交互式的 shell 如果你退出它(终止它)你的容器也会停止。(你替换了你在中指定的最后一个命令CMD
此处为 bash
)
docker exec -it container-name /bin/bash
: 当你想在 运行ning 容器
中启动交互式 shell
这里是菜鸟。所以我正在尝试使用 AWS + docker + nginx + uWSGI + flask 部署 Web 应用程序。据我所知,docker 容器必须有某种前台作业来保持自身存活,否则它会在执行后自行杀死。
我注意到 uWSGI 在不作为守护进程 运行 时是一个前台进程,因此我认为我可以使用它来保持我的容器活动。问题是,一旦它在前台 运行ning 就绝对没有办法回到 shell...(如果我在这里错了,请 lmk!)这意味着我无法执行每当我需要服务器维护时,我的容器和 运行 命令就在上面。
我见过这样的做法,您只保留一个虚拟处理 运行ning,每隔几秒左右回显一个简单的字符串。但这看起来有点笨拙——这真的是理想的方法吗?如果是,是否有比回显更好的虚拟进程想法,可以让我的控制台更干净一些?
提前致谢。
您可以使用 bash 进入每个 运行 容器:
docker exec -it container-name /bin/bash
Docker 图像是使用 Docker 文件创建的,在 Docker 文件中指定创建图像所需的步骤,您注意到 Docker 文件中的最后一条指令通常是 CMD
当你 运行 使用这个命令的图像 docker run image-name
docker 在容器中执行你在 CMD
中指定的命令,如果这个命令结束,你的容器停止。但是你可以用其他东西替换这个命令,比如 docker run -it image-name bash
这个命令给你一个交互式的 shell 如果你退出它(终止它)你的容器也会停止。(你替换了你在中指定的最后一个命令CMD
此处为 bash
)
docker exec -it container-name /bin/bash
: 当你想在 运行ning 容器