Docker 错误:没有这样的容器:friendlyhello

新手上路,请多包涵

我正在尝试停止并删除一个 docker - 容器。

我从 docker turorial 第 1 部分开始,现在是第 2 部分: https ://docs.docker.com/get-started/part2/#run-the-app

我从那里复制了源代码。它也可以在这里找到: https ://gist.github.com/sl5net/8b510bc0d3e00c474575e010003406c1

在这里你可以看到我的控制台的样子:

 Microsoft Windows [Version 10.0.16299.431]
C:\fre\private\docker\test18-05-14_05-27>docker build -t friendlyhello .
Sending build context to Docker daemon   5.12kB
no matching manifest for windows/amd64 in the manifest list entries

BTW 解决方案:我换成 linux 容器(右键单击> docker 图标上的上下文菜单)

 C:\fre\private\docker\test18-05-14_05-27>docker build -t friendlyhello .
... Successfully built itsdangerous MarkupSafe
Successfully tagged friendlyhello:latest

C:\fre\private\docker\test18-05-14_05-27>docker run -p 4000:80 friendlyhello
 * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

C:\fre\private\docker\test18-05-14_05-27>docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED    SIZE
friendlyhello       latest              7d4d1e0f78e6        8 minutes ago    151MB
python              2.7-slim            46ba956c5967        9 days ago    140MB

C:\fre\private\docker\test18-05-14_05-27>docker container stop friendlyhello
Error response from daemon: No such container: friendlyhello

C:\fre\private\docker\test18-05-14_05-27>docker rm -f friendlyhello
Error: No such container: friendlyhello

原文由 SL5net 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 464
2 个回答

没有名称为 friendlyhello 的容器可用,因为您只是使用 docker run -p 4000:80 friendlyhello 运行容器,这里 friendlyhello 是图像的名称,而不是容器的名称姓名。

通过给它一个如下名称 运行该容器:-

 docker run -p 4000:80 --name SOMENAME friendlyhello

在这种情况下,您将能够使用以下命令停止并删除该容器

# container stop
docker container stop SOMENAME

# container removal
docker rm -f SOMENAME

或者,如果在没有给容器命名的情况下不运行,则必须在命令中使用容器的 ID 来停止和删除,即使在各种其他命令中,您也将使用 ID 来引用该容器

原文由 kakabali 发布,翻译遵循 CC BY-SA 4.0 许可协议

该教程显示:

 $ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

您尚未向容器添加名称(标签),因此您必须使用其 ID 来停止它:

 docker container stop 1fa4ab2cf395

friendlyhello图像 的名称,而不是容器的名称。

请参阅 docker run --name 为其命名。

如果你没有名字,你的 ID 会是 docker ps -a

OP补充说:

使用 docker stop 8e008ebf3ad7 它的列表使用: docker container ls buts 留在列表中使用: docker ps -a

 docker stop 8e008ebf3ad7
8e008ebf3ad7
docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS
               NAMES
5227976cb9bb        friendlyhello       "python app.py"     About an hour ago   Up About an hour    0.0.0.0:4001->80/tcp   SOMENAME

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
     PORTS                  NAMES
5227976cb9bb        friendlyhello       "python app.py"     About an hour ago   Up About an hour
     0.0.0.0:4001->80/tcp   SOMENAME
8e008ebf3ad7 friendlyhello "python app.py" 6 hours ago Exited (137) About an hour ago

这是意料之中的:停止将使容器处于“已退出”状态,当您想要调试未经您同意而停止的容器时,这很方便!

然后,您可以执行 docker container rm <ID> 以便将其从 docker ps -a 列表中删除。

请注意,如果您使用 docker run --rm ... 启动容器,则 stop 将停止 直接删除(删除)容器。

原文由 VonC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题