我有一个非常简单的dockerfile,只有一行,即“FROM ubuntu”。
我知道我可以从这个镜像创建一个新的docker容器,并使用命令docker run -it my_new_container
交互运行它
稍后我可以使用命令start my_new container
启动这个新容器
据我所知,我还应该能够通过start -i my_new container
交互式地使用这个容器
但是,它不工作。它只是运行并退出。我没有像使用run时那样到达容器的命令提示符。我做错了什么?
3条答案
按热度按时间83qze16e1#
如果我理解正确的话,您希望在终端中查看容器的日志,与使用
docker run
运行映像时相同。2ul0zpep2#
直接回答:
要为未运行的容器运行交互式shell,首先要找到容器所基于的映像。
然后:
如果最终的容器是基于alpine镜像的,那么用sh替换bash。
从技术上讲,这将创建一个新的容器,但它完成了工作。
EDIT [首选方法]:
一个更好的方法是给予容器一些不相关的事情做。VSCode文档中的一个很好的解决方案是将以下命令放入docker-compose.yml文件的服务定义中:
这里的想法是,你告诉你的容器睡眠一段时间(无限长的时间)。讽刺的是,你的容器将不得不保持这种状态,迫使容器继续运行。
这就是我运行容器的方式。最好的祝福给任何需要这些信息的人。我们都在学习:)
g9icjywg3#
您可以输入运行中的容器:
如果
bash
在容器中不可用,则可以将bash
替换为sh
。以后要attach到正在运行的容器,请使用
-a
/--attach
选项:如果你需要显式地使用UID,比如root = UID 0,你可以这样指定:
它会将您记录为
root