首页 > 解决方案 > Windows docker 容器以交互模式运行,如果不删除容器就无法停止容器,无法提交容器

问题描述

我正在使用带有 Windows 容器的 Windows docker。

我正在以交互模式启动一个容器,以便我可以运行一些 powershell 脚本来启用远程 iis 管理。我试图将这些脚本添加到我的 dockerfile 以将它们合并到图像中,但它们似乎并没有粘住,除非我在容器运行后在 powershell 中运行它们。

我正在启动容器

docker run -it --rm --name mycontainer --entrypoint powershell myimage

然后,如果我在做出我需要的更改后尝试提交它,我会收到一个关于无法在 Windows 上提交正在运行的容器的错误。所以我停止了容器

docker stop mycontainer

然后当我寻找要提交的容器时,它就消失了。我相信这与使用 -it 参数运行它有关。

有没有办法让 powershell 访问容器,进行更改,然后将容器提交到包含我所做更改的新映像?

标签: powershelldockerdockerfilewindows-container

解决方案


终于找到了办法。我现在不使用 -it -rm 创建容器,而是使用 -d 创建容器,并使用 docker exec powershell 运行 powershell 命令。然后我可以停止容器并将其提交到一个图像,新图像包含我所做的所有更改。


推荐阅读