我想在 Mac OS X El Capitan (v10.11.2) 上使用 docker-compose
运行多容器应用程序。
但是,命令 $ docker-compose up
命令抱怨它无法连接到 Docker 守护进程。
错误:无法连接到 Docker 守护程序 - 您可能需要运行
docker-machine start default
。
只有在执行 $ eval "$(docker-machine env default)"
之后,我才能访问 docker-compose
命令。
为什么会这样,我该如何克服这个额外的步骤?
原文由 ndequeker 发布,翻译遵循 CC BY-SA 4.0 许可协议
随
Docker.app
附带的 Docker 版本的更新自发布此答案以来,macOS 上的 Docker 体验得到了改善:
现在唯一的先决条件是
Docker.app
正在运行。请注意,按需启动它需要一段时间,因为必须启动底层 Linux VM。然后任何 shell 都可以访问 Docker 功能。
默认情况下,
Docker.app
在登录时启动(您可以通过其首选项进行更改)。如果您更喜欢 从命令行 按需 启动和停止 Docker ,这里有
bash
执行此操作的脚本docker-start
和docker-stop
;将它们放在您的任何地方$PATH
。当
docker-start
启动Docker.app
时,它会等待 Docker 完成启动并准备就绪。docker-start
:docker-stop
:原始的,过时的答案:
Kevan Ahlquist 的有用答案 显示了要添加到 Bash 配置文件 (
~/.bash_profile
) 的命令,以在打开交互式 shell 时自动初始化 Docker。请注意,您始终可以通过打开应用程序
/Applications/Docker/Docker Quickstart Terminal.app
(例如,通过 Spotlight)在 新 的 shell 选项卡/窗口中初始化 Docker。在现有的 shell 中,您可以将其调用为
open -a 'Docker Quickstart Terminal.app'
(这也会打开一个 新 的 shell 选项卡)。这个答案提供了一种在 当前 shell 中启动 Docker 的便捷方式。
在下面添加 Bash shell 函数-
docker-start
和docker-stop
- 在以下方面改进了 Kevan 的方法:docker-start
,而无需在 打开 shell 时启动 VM 的开销(一旦 Docker VM 运行,初始化会快得多,但仍需要相当长的时间)。(当然,您仍然可以选择直接从您的个人资料中调用
docker-start
。)docker-stop
允许停止 Docker 并按需清理环境变量。这些函数确保 Docker 的错误消息不会被抑制,并且它们会传递 Docker 错误退出代码。
提供了额外的状态信息。
您可以将 VM 名称作为参数传递;默认为
default
。例子:
用于按需启动和停止 Docker 的 Shell 函数(将它们放在例如
~/.bash_profile
以在您的交互式 Shell 中全局可用性)。Note : The functions work in
bash
,ksh
, andzsh
, but inksh
you have to rename them so as not to include函数名称中的“-”。