跑步
docker compose up
给出 docker: 'compose' is not a docker command.
但是
docker-compose up
效果很好。
什么给予?我认为 compose 现在应该成为 docker cli 的一部分。
如何运行
docker compose up
并获得与 docker-compose up
相同/相似的行为?
docker --version
-> Docker version 20.10.10, build b485636f4b
docker-compose --version
-> Docker Compose version 2.1.1
这是因为我没有通过docker桌面安装了docker。
我使用 minikube 作为我的 docker 守护进程和基本的 docker cli。但是基本的 cli(通过
brew install docker
安装)没有 docker compose
,那是 docker 桌面的一部分。
您可以在这里找到其余信息:
Docker(在 cli 中是
docker
)和 Docker Compose(在 cli 中是docker-compose
)是不同的东西。
Docker 是容器运行的引擎
Docker-compose 是这些容器的管理器或编排器
这意味着你不能做
docker compose
,正确的命令是docker-compose
我认为你对命令感到困惑
使用
docker
启动容器的方式(只有1个容器)是
docker run -ti ubuntu bash
另一方面,您可以使用 Docker compose 执行相同的操作,但您需要一个
docker-compose.yml
文件,其中写入所有配置,然后启动它
docker-compose up
总结一下
Docker 和 docker compose 是两个不同的东西。您可以在这里找到更多信息docker 和 docker-compose 之间有什么区别
您已经独立安装了 docker 和 docker-compose。 Compose 是一个 Docker 插件。为了让 Docker 找到插件,它需要知道它的位置。
安装 docker-compose 作为插件的方法有很多种,它们都记录在 docker 安装 compose 插件文档页面中。是的,当您使用 Docker Desktop 时,这会自动为您完成。
我更喜欢单独安装它们并运行以下命令来显示 docker-compose 所在的位置。这也解决了问题。以下内容应该适用于大多数 Linux 发行版:
# Create your local docker config CLI plugins folder, if it doesn't exist
mkdir -p "$HOME"/.docker/cli-plugins
# Create a symlink to docker-compose in that folder
ln -s "$(which docker-compose)" "$docker_compose_plugin_file"
如果您在 macOS 上使用 Homebrew,则可以使用上面的修复方法,也可以使用运行
brew info docker-compose
并查看警告信息指示的推荐解决方案。
==> Caveats
Compose is a Docker plugin. For Docker to find the plugin, add "cliPluginsExtraDirs" to ~/.docker/config.json:
"cliPluginsExtraDirs": [
"/opt/homebrew/lib/docker/cli-plugins"
]