是否可以在未运行的容器中获取bash访问权限?

是否可以在未运行的容器中获取bash访问权限?,bash,docker,containers,Bash,Docker,Containers,我能够成功运行FlaskAPI容器。但在应用程序执行过程中,由于某种原因,它会失败并停止容器 我检查了容器日志,注意到一些文件丢失错误即将出现。现在我想通过访问停止的容器的/bin/bash来调试缺少的文件。但它抛出一个错误,表示容器未运行 docker exec-it容器/bin/bash 在已停止的容器中是否存在访问bash的解决方法?您不能,因为此容器已停止,并且已关闭的虚拟机已停止。您可以使用docker logs命令检查日志 docker container ls -aq docke

我能够成功运行FlaskAPI容器。但在应用程序执行过程中,由于某种原因,它会失败并停止容器

我检查了容器日志,注意到一些文件丢失错误即将出现。现在我想通过访问停止的容器的
/bin/bash
来调试缺少的文件。但它抛出一个错误,表示容器未运行

docker exec-it容器/bin/bash


在已停止的容器中是否存在访问
bash
的解决方法?

您不能,因为此容器已停止,并且已关闭的虚拟机已停止。您可以使用
docker logs
命令检查日志

docker container ls -aq

docker logs <name_of_your_dead_container>
docker容器ls-aq
码头工人日志

您可以尝试使用
docker commit
命令

docker container ls -aq

docker logs <name_of_your_dead_container>
从:

将容器的文件更改或设置提交到 新形象。这允许您通过运行 交互式shell,或将工作数据集导出到另一台服务器

我们可以使用提交将容器转换为Docker映像 指挥部。我们所需要知道的只是该文件的名称或标识符 停止集装箱运输。(您可以使用 docker ps-a)

拥有已停止容器的标识符
0dfd54557799
,我们可以 创建一个新的Docker映像。生成的图像将具有相同的属性 状态为以前停止的容器。在这一点上,我们使用 docker运行并覆盖原始入口点以进入 容器

#提交停止的映像
docker提交0dfd54557799调试/ubuntu
#现在我们有了一个新的形象
docker图像列表
创建的存储库标记图像ID大小
调试/ubuntu cc9db32dcc2d 2秒前64.3MB
#从“断开的”图像创建一个新容器
docker run-it-rm-entrypoint sh debug/ubuntu
#我们可以检查容器内部,例如,文件系统
$ls/件
App.dll
App.pdb
App.deps.json
#CTRL+D以退出容器
#删除容器和图像
docker映像rm调试/ubuntu

来自docker run的手册页:

      --entrypoint=""
      Overwrite the default ENTRYPOINT of the image
因此,请使用以下方法:

 docker run --entrypoint=/usr/bin/sleep 1000 ......
这将启动容器并等待1000秒,允许您连接和调试。

不,您不能

但是,在执行docker运行时,检查日志或指定bash作为入口点可能会很有用

检查日志:

docker日志
外壳入口点:

docker运行--name--entrypoint/bin/bash
如果您的容器没有/bin/bash,请尝试

docker run --name <CONTAINER_NAME> --entrypoint /bin/sh <IMAGE_NAME>
docker run--name--entrypoint/bin/sh

为了再次运行
docker run
命令,我必须先删除现有的容器。是的,否则会出现一些名称和端口冲突
docker commit
似乎很有趣。我将尝试这种解决方法。谢谢很酷,让我知道它是如何运作的,因为我以前从未亲自使用过它。
docker commit
几乎从来都不是最佳实践。如果有的话,你应该少用。在这种情况下应该没有必要。
docker logs  <CONTAINER_NAME>
docker run --name <CONTAINER_NAME> --entrypoint /bin/bash <IMAGE_NAME>
docker run --name <CONTAINER_NAME> --entrypoint /bin/sh <IMAGE_NAME>