我通常更喜欢用 brew 在我的 OSX 上管理我的应用程序
我能够安装 docker、docker-compose 和 docker-machine
docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455
我没有下载并运行“Docker for Mac”应用程序。
但是,当我尝试运行时
> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
我已经检查了袜子文件
ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory
我也尝试过这个建议的解决方案:Mac OS X sudo docker Cannot connect to the Docker daemon. Is the docker daemon running on this host?
但我收到了这个错误信息:
$ eval $(docker-machine env default)
Host does not exist: "default"
是否可以通过命令行工具运行 docker 服务?
在受支持的 Mac 上,运行:
brew install --cask docker
然后启动 Docker 应用程序。点击下一步。它将要求特权访问。确认。鲸鱼图标应出现在顶部栏中。单击它并等待“Docker 正在运行”出现。
您现在应该可以运行 docker
命令:
docker ps
因为 docker 是一个系统级的包,所以不能使用 brew install
安装它,而必须使用 --cask
。
注意:此解决方案仅适用于 CPU 支持虚拟化的 Mac,可能不包括旧 Mac。
2022 年编辑 - 评论部分提到 Docker Desktop 的许可发生了变化。请考虑下面的替代方案,并查看评论以获取详细信息。
在 macOS 上,docker
二进制文件只是一个客户端,您不能使用它来运行 docker 守护程序,因为 Docker 守护程序使用 Linux 特定的内核功能,因此您不能在 OS X 中本地运行 Docker。所以您必须安装 { 3}为了创建VM并附加到它。
在 macOS 上安装 docker-machine
如果您还没有 docker-machine
命令,请使用以下方法之一安装它:
使用 Brew 命令:brew install docker-machine docker。
从发布页面手动: $ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/ bin/docker-machine $ chmod +x /usr/local/bin/docker-machine
请参阅:Get started with Docker for Mac。
安装 Virtualbox
docker-machine
依赖于安装的 VirtualBox,如果不是这样,将会失败。如果您已经拥有 VirtualBox,则可以跳过此步骤。
使用 Homebrew: brew install --cask virtualbox
手动使用 Virtualbox.org 上的版本
您需要在 OS X 安全面板中主动接受加载 Virtualbox 内核扩展,然后继续重新启动机器,以便下一个命令不会因 Error: VBoxNetAdpCtl: Error while adding new interface
而失败
在 macOS 上配置 docker-machine
创建一台 default
机器(如果您没有,请参阅:docker-machine ls
):
docker-machine create --driver virtualbox default
然后为 Docker 客户端设置环境:
eval "$(docker-machine env default)"
然后通过列出容器进行仔细检查:
docker ps
请参阅:Get started with Docker Machine and a local VM。
有关的:
brew install docker 不包括 docker 引擎?
对于 Linux,请参阅:Docker can't connect to docker daemon
对于 Windows,请参阅:Docker 警告:无法从守护进程获取默认注册表端点
eval "$(docker-machine env default)"
添加到您的 shell 的 .*rc 文件中(例如 .zshrc、.bashrc)
VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available) VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp
Then check out this answer
我遇到了同样的问题,我通过以下步骤解决了它:
docker-machine restart
退出终端(或 iTerm2 等)并重新启动
eval $(docker-machine env default)
我也回答了here
-bash: docker-machine: command not found
。
我有 Mac OS,我打开 Launchpad
并选择 docker
应用程序。从 reset
标签点击 restart
。
试试这个来创建默认值。
docker-machine create default
xhyve
,请参阅 stackoverflow.com/a/42419979/32453 或只安装 virtualbox :)
docker machine
已弃用。回购被锁定。
在 OSX 上确保您在发布之前已启动 Docker 应用程序
docker ps
或docker build
...等...是的,发行似乎很奇怪且有些误导
docker --version
即使 docker 守护进程没有运行,也给出版本...对于那些其他版本的 cmds 同上...我只是遇到了完全相同的症状...OSX 上的这种行为与 linux 上的不同
这个问题:
$ brew install docker docker-machine
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这显然意味着执行以下操作:
$ docker-machine create default # default driver is apparently vbox:
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
$ brew cask install virtualbox
…
$ docker-machine create default
# works this time
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
$ eval "$(docker-machine env default)"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
它终于奏效了。
如果您不想安装虚拟盒子,可以使用“xhyve”驱动程序。你也可以安装“docker app”(然后运行它),这显然是为了你不必运行上面的一些。 brew cask install docker
然后运行应用程序,查看其他答案。但显然本身没有必要。
我更新了docker,docker说它正在运行,诊断良好。我需要取消设置一些旧环境变量(感谢 https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems )
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
安装 minikube 并加入黑暗面。
https://kubernetes.io/docs/tasks/tools/install-minikube/
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
eval $(minikube docker-env)
$ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /local/swagger.json -l python -o /local/test/
[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/swagger.json
[main] WARN io.swagger.codegen.DefaultGenerator - 'host' not defined in the spec. Default to 'localhost'.
在带有 bash v5 的 Macbook Pro 2018 上运行良好。这些天 IMO 无需安装所有其他 docker 废话。根据我的经验,minikube 附带的 VM 和安装脚本可以替代 docker 机器。
eval $(minikube docker-env)
无法为我解决问题。
env
命令将显示环境变量。这应该对 macos 网络层提供一些见解。借助 minikube,Kaniko builder 可能会在 2022 年成为更好的解决方案。
我有同样的问题。 Docker 正在运行,但无法通过 CLI 访问它。
对我来说,问题是通过执行“Docker Quickstart Terminal.app”解决的。它位于“/Applications/Docker/”文件夹中。只要我在终端应用程序的这个实例中工作,Docker 就可以完美地工作。如果需要第二个窗口,我必须再次运行“快速启动”应用程序。
我有一个 Docker for Mac 安装。因此,我不确定我的解决方案是否适用于 Homebrew 安装。
“Docker Quickstart Terminal”应用程序似乎本质上是一些用于启动终端应用程序的苹果脚本和一个初始化所有必要环境变量的 bash 启动脚本。
希望这对其他人有帮助!
您应该执行安装 docker 的脚本并从命令行启动它:
brew install --cask docker
sudo -H pip3 install --upgrade pip3
open -a Docker
docker-compose ...
之后 docker-compose
应该可以工作
这对我有用:
open --background -a Docker
需要几秒钟才能连接到 docker。
我在 Mac OS Big Sur 上。
Unable to find application named 'Docker'
我在我的mac上遇到了类似的问题,我发现docker没有在我的机器上运行,我只是去应用程序并调用了whale然后它工作了。
刚刚打开 Docker Desktop 对我有用。
我首先通过自制软件尝试了 docker 和 docker-compose,但它的问题列在这里。我必须从 https://docs.docker.com/docker-for-mac/install/ 安装 docker 的官方安装,然后一切都按预期工作。
我只需要运行 Spotlight 搜索并在 brew cask install
创建的 /Applications 文件夹下执行 Docker 应用程序。一旦运行,它会要求完成安装。然后我能够运行 docker ps
尝试了以下方法,现在可以正常工作
$ docker-machine create default
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet0"
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
然后
$ docker-machine env default
最后
$ eval $(docker-machine env default)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker 被设计为在 Linux 上运行。但是,它可以在 macOS 上的 VM 中运行。这样做有点麻烦,这也许就是 Docker Desktop 最初存在的原因。但这并不意味着您不能在 Mac 上舒适的命令行中享受使用 Docker 的乐趣。
需要考虑的一些选项:
您可以使用 lima 并将别名 doocker='lima nerdctl' 添加到您的 bash 配置文件中。您可以在您的机器上安装 Linux VM 并改用它(不推荐)。 Mac 上的双引导 Linux。现在甚至支持带有 T2 和 M1 芯片的机器。
使用 VirtualBox (6.1.32r149290
) 的更新版本,命令 docker-machine create --driver virtualbox default
不起作用,虚拟 VM 的自动生成 IP 出错,解释在这里 https://stackoverflow.com/a/69745931/2917630 。
此命令帮助我解决了问题:docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.59.3/24" default
。
尝试:
brew install --cask docker
然后启动 Docker 应用程序。点击下一步。它将要求特权访问。确认。鲸鱼图标应出现在顶部栏中。单击它并等待“Docker 正在运行”出现。
你现在应该可以运行 docker 命令了:
docker ps
我运行 brew install docker-machine;那么问题就解决了。最新的 docker 版本不包含 docker-machine。
Docker Toolbox 和 Docker Machine 都已被弃用。 Docker Desktop 是官方推荐的替代品。
原始答案我发现 Docker Toolbox 可以通过 brew/cask 获得
安装自制软件
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装木桶
brew install caskroom/cask/brew-cask
安装 docker 工具箱
brew cask install docker-toolbox
安装 docker-machine
足以让我解决问题。
不定期副业成功案例分享
$ open /Applications/Docker.app
返回LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Docker.app.