如何在没有 docker 桌面的 macOS 中安装 docker-engine?

san*_*zti 41 docker macos

最近,Docker 宣布 Docker Desktop 将不再对某些类型的用户免费。请参阅博客文章中的公告。

\n

我不需要 Docker Desktop\xc2\xae 独有的任何功能。我在一台装有 debian 的笔记本电脑上使用了 docker,这个版本对我来说已经足够了。

\n

有没有办法在macOS上安装linux版本的docker?我需要引擎和 cli 工具,仅此而已。我运行构建命令、推送、标记、运行、docker-compose 等。

\n

ruz*_*ack 19

docker 有一个替代品,那就是podman

  1. 安装:brew install podman
  2. 下载并准备虚拟机:podman machine init
  3. 打开虚拟机:podman machine start
  4. 作为码头工人使用:podman run -d -p 8000:80 nginx
  5. 验证容器:podman ps
  6. 与其互动:curl localhost:8000

它底层使用QEMU进行虚拟化,并默认设置一台Fedora CoreOS的机器。

要在安装后访问默认计算机和虚拟化环境的详细信息:

cat ~/.config/containers/podman/machine/qemu/podman-machine-default.json
Run Code Online (Sandbox Code Playgroud)

  • 失败,podman 不支持在 podman 计算机中挂载本地 (macos) 文件夹以用作容器中的挂载卷 (2认同)

dir*_*rkt 15

在我的 Macbook 上,我通过 homebrew 安装了 docker

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
Run Code Online (Sandbox Code Playgroud)

(虽然这是在 docker 桌面变得非免费之前的事情,但我认为它仍然可以工作)

它使用 xhyve 作为虚拟机,因此基本上是在 xhyve 中运行 Linux 发行版,然后在该 Linux 发行版中运行 Docker。

你需要做一些配置,我按照这篇文章进行的。

我创建虚拟机的命令行是

docker-machine create default --driver xhyve --xhyve-experimental-nfs-share=true --xhyve-disk-size "40000"
Run Code Online (Sandbox Code Playgroud)

  • 好吧,“xhyve”驱动程序已被弃用。此外,“docker-machine”项目在几年前就被 docker 弃用了,并且分叉项目已经有一段时间没有得到积极维护了。我建议使用 [podman](https://podman.io/) 作为 docker 替代品。您甚至可以将 docker 改为 podman,其工作方式几乎相同。 (3认同)

Phi*_*ing 8

据我所知,docker 在功能上与 MacOS 不兼容。我的 Macbook 上运行着 docker 桌面,据我所知,这是通过 docker 桌面创建一个 Linux 虚拟机并在其中运行 Docker 引擎来实现的。

\n

这解释了为什么docker桌面有分配资源的概念,包括“磁盘映像大小”,与docker引擎本身无关。

\n
\n
\n

有没有办法在macOS上安装linux版本的docker?

\n
\n

不,没有 Linux 虚拟机就不行。这是因为 Docker 是命名空间cgroup的包装器,它们都是 Linux 概念,在 MacOS 内核中没有实现。

\n

由于这两个功能是容器技术的核心,因此您不太可能发现其他非 Docker 解决方案(包括 Podman)也能工作……除非您使用 Linux 虚拟机。

\n
\n
\n

我不需要 Docker Desktop\xc2\xae 独有的任何功能

\n
\n

可能是这样,我不知道你的需求。但请注意,您可能正在使用 docker 桌面的某些功能,但您没有意识到这些功能是“功能”。例如,docker 绑定挂载是 docker 中的核心概念,但是为了让它们在 Mac 上工作,docker 桌面还必须负责弥合 MacOS 和 Linux 虚拟机之间的差距。

\n
\n

要运行您自己的虚拟机,您可以考虑使用Virtualbox等虚拟机管理程序在 Mac 上运行您自己的 Linux 虚拟机。

\n


小智 5

我发现的另一个选择是安装minikube

Minikube 将取代 Docker 的 Kubernetes。

注意:这有一些缺点。

brew install minikube
Run Code Online (Sandbox Code Playgroud)

然后通过brew安装纯docker:

brew install docker
Run Code Online (Sandbox Code Playgroud)

通过brew的Hyperkit:

brew install hyperkit
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以使用 Virtuabox 而不是 hyperkit。更多详细信息,请参阅Minikube 的文档

  • 直接澄清缺点或至少通过支持链接澄清缺点将改善答案,就像链接 Minikube 文档一样。 (5认同)