【问题标题】:Unable to attach to Docker container: ".: .: is a directory"无法附加到 Docker 容器:“.: .: 是一个目录”
【发布时间】:2015-07-23 17:10:16
【问题描述】:

启动后,我无法附加到 Docker 容器。我使用以下命令:

[root@docker-test ~]# docker start b1
b1
[root@docker-test ~]# docker exec -it b1 /bin/bash .
Error response from daemon: Container b1 is not running
[root@docker-test ~]# docker attach b1
You cannot attach to a stopped container, start it first

在构建后立即尝试附加到容器也会失败:

[root@docker-test ~]# docker run -it --name b5 build8 bash .
.: .: is a directory
[root@docker-test ~]#

查看日志,docker logs b1 显示:

.: .: is a directory
.: .: is a directory
.: .: is a directory
.: .: is a directory...etc etc.

每次我尝试启动容器时,都会在日志中添加另一个.: .: is a directory。 我已经重新启动了 Docker 守护程序,重新启动了服务器,并重新安装了 Docker,但错误仍然存​​在。我最近才开始遇到这个问题,在此之前 Docker 一直运行良好。谷歌搜索这个日志条目没有发现任何东西。有没有人有任何想法?非常感谢。

【问题讨论】:

  • 这个容器是否曾经工作过,或者这是您第一次在以前运行良好的容器中遇到这个错误?该容器是从哪个图像构建的?你有它的 Dockerfile 可用吗?听起来好像你有一些错误的 CMD 或 ENTRYPOINT 指令
  • 你能展示一个简短的复制器吗,或者你的容器到底是做什么的?

标签: docker containers


【解决方案1】:

尝试不带点 (.),例如:

[root@docker-test ~]# docker exec -it b1 /bin/bash

或者:

docker run -it --name b5 build8 bash

这将在b1 容器中启动bash 进程(假设bash 可用)。

当您在 bash 命令之后指定点 (.) 时,bash 会尝试将其作为命令执行。但是. 是一个目录,没有命令。

【讨论】:

  • 好收获;我什至没有注意到那里的点:)
  • 似乎当我使用您的命令“docker run -it --name b5 build8 bash”(不带点)创建一个容器时,它可以完美运行。如果我确实将点放在末尾,则容器在创建时将无法运行,从那时起我无法附加到它,即使重新启动它也是如此。奇怪的。感谢您的提示!
  • 其实这并不奇怪。它无法运行,因为 (.) 不是命令而是目录。而且因为它没有运行,所以您无法附加到它。当您使用docker startdocker restart 重新启动它时,它会再次失败,因为它会记住给定的命令。再次,您将无法附加到它。
  • 啊,我明白了,有道理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2020-03-08
相关资源
最近更新 更多