【问题标题】:"Docker compose: command not found" - Despite configuring the path and making file as executable“Docker compose:找不到命令” - 尽管配置了路径并将文件设为可执行文件
【发布时间】:2019-06-10 03:25:12
【问题描述】:

我是 Docker 新手。我想运行一个 docker-compose 文件。我已经安装了 docker-compose,请在下面找到详细信息

which docker-compose
# returns usr/local/bin/docker-compose
docker-compose -v
# returns docker-compose version 1.24.0, build 0aa59064

我指的是堆栈溢出帖子,并且能够找到有关 PATH 变量的内容,因此我也将 docker-compose 放在 /usr/bin/ 路径中。 所以,下面的命令

find /usr/bin/ -name "docker-compose"
# returns /usr/bin/docker-compose

此外,我通过在各自文件夹下使用“chmod +x”命令使两个路径下的文件都可执行。

所以当我最终尝试执行我的 docker-compose.yml 文件时,我收到以下错误

sudo ./docker-compose up - I am executing this command right in the folder where docker-compose.yml file is present

我得到以下错误,

sudo: ./docker-compose: command not found

如何在没有任何问题的情况下执行我的 docker-compose.yml 文件并启动我的容器。将其作为可执行文件时,我是否犯了任何错误?

【问题讨论】:

标签: docker docker-compose dockerfile docker-machine


【解决方案1】:

改用sudo docker-compose./ 表示您所在的 shell 将在当前目录中查找。如果您不在 /usr/local/bin 或 /usr/bin 中,它将失败。

此外,如果您使用的是 linux,则应遵循以下说明以避免必须以 root 身份运行 docker:https://docs.docker.com/install/linux/linux-postinstall/

【讨论】:

  • 你好@Christian Elowsky - 感谢您的回复。有用。 1) 不建议在 linux 中以 sudo 方式运行 docker-compose 吗? 2)不应该 ./ 总是考虑当前目录吗?为什么它依赖于 /usr/bin/ 等?
  • ./foo当前目录,从不考虑其他任何地方。至于sudo 访问,请考虑您可以轻松地docker run 一个root shell,整个主机文件系统以读写方式安装,并在安全性与便利性之间做出您自己的决定。
  • 最终,docker 守护进程需要与 root 相同的权限,所以我链接到的方向更方便。您可以在 docker daemon here 的攻击面上查找信息。至于您的第二个问题,./ 确实始终考虑当前目录,我认为这是您遇到的问题的一部分。 docker-compose 可执行文件似乎在 /usr/local/bin/ 和/或 /usr/bin 中,但不在您执行命令的目录中。
  • 但是当我下载 docker-compose 时,我有一个名为“docker-compose”的文件。除此之外,我还有另一个 docker-compose.yml 文件,其中包含我想要启动的容器的详细信息。所以我认为第一个文件就像一个配置文件。第二个文件是我应该执行来运行容器的东西。第一个文件在 /usr/local/bin 中,第二个文件在当前目录中。这两个文件有什么区别?我错过了什么
猜你喜欢
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 2019-05-03
相关资源
最近更新 更多