【问题标题】:Shell files unable to use docker correcltyShell 文件无法正确使用 docker
【发布时间】:2023-04-09 11:55:01
【问题描述】:

我运行三个 .sh 文件以构建和运行 docker 映像。截至昨天,我似乎无法创建任何可行的新方法。这很奇怪,因为即使我完全复制了工作的,它仍然不起作用。

我可以在终端中运行 shell 脚本中的行,它们会起作用。我不知道这不起作用或为什么不起作用。

编辑:我可以运行这些文件,但它们会输出类似

的内容
Error response from daemon: No such container: foo-container

这不是真的,因为我可以通过 docker ps 看到容器

例子:

这是一个有效的旧脚本

#! /bin/bash
docker stop cb-server
docker rm cb-server
docker rmi couchbase.server.container
docker build -t couchbase.server.container .

但是如果我用完全相同的代码创建一个新的并运行它,我会得到:

Error response from daemon: No such container: cb-server
Error response from daemon: No such container: cb-server
Error response from daemon: invalid reference format

【问题讨论】:

  • 你能分享任何脚本吗?
  • 好了,我现在对此有点疯狂
  • 当容器已经停止并移除时,您将收到 no such container 错误。运行 docker ps -a | grep cb-serverdocker images | grep couchbase 并查看是否返回响应
  • 正如我所说,docker ps 和所有这些命令(我只是为了以防万一)显示了我创建的图像和容器。我对此没有任何问题,只是我创建的新脚本由于某种原因无法访问这些图像和容器(当旧脚本清楚地可以找到它们并访问它们时)

标签: shell docker


【解决方案1】:

两个“没有这样的容器”响应可能是因为容器和图像在您的机器上不存在(例如您已经停止并删除了它们)

您可以在尝试运行这些命令之前用条件包装这些命令。

https://stackoverflow.com/a/38576401/2892779

无效的参考格式可能是这样的:

https://github.com/moby/moby/issues/25599

图像名称只允许使用小写字符(我在您发布的脚本中没有看到任何与该问题相关的内容,但您说您有 3 个因此假设可能是其他一个)

【讨论】:

  • 感谢您的回答。我的机器上不存在的容器和图像是我想到的第一件事,但它们确实存在,docker 用 docker ps 清楚地显示它们,并且可以通过其他(旧)脚本找到它们。恐怕这可能与权限有关
  • 您是否正在为任何命令运行 sudo?您主机上的 docker 操作系统和版本是什么?您是否尝试过重新启动 docker 守护进程?脚本在同一台机器上吗?同一个文件夹?如果重命名旧脚本怎么办?您可以在两个脚本都存在的文件夹中运行last -al 以便检查权限吗?你在脚本上运行chmod +x 了吗?我也注意到了这一点,但是您的 bash 脚本应该删除 # 和 ! 之间的空格
  • 刮掉关于shebang行的评论。我今天早上早些时候在手机上浏览,一定是看错了。
【解决方案2】:

当我从我的 PC(运行 windows)编辑服务器机器(运行 Ubuntu)上的脚本时,我遇到了这个问题。修复它的是检查行尾格式。 在 Windows 上编辑 .sh 脚本会导致 DOS 行结束。显然 docker 无法处理这些(甚至无法说出问题所在)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多