Docker - 替代 Mac 上的 `docker`

Docker - Replacement for `dockerd` on Mac

我想用这样一个开放的 TCP 地址启动 docker 守护进程:docker daemon -H tcp://0.0.0.0:2375,但终端建议我改用 dockerd,这显然不是程序Docker 客户端随 mac 一起提供。有什么办法可以吗

?

我在官方论坛找到了解决方法

https://forums.docker.com/t/using-pycharm-docker-plugin-with-docker-beta/8617/9

$socat TCP-LISTEN:2376,reuseaddr,fork UNIX-CLIENT:/var/run/docker.sock

That workaround opens port 2376 to the world... as TLS isn't enabled, this is a bad idea as anyone on the same network can hijack your docker daemon

Mac 上的 运行dockerd 不支持。来自 this issue:

I think on Darwin it should never suggest to run dockerd. The daemon runs in a Linux virtual machine, so you do not need to (and cannot) run it manually.

终于找到了 mac docker 的配置,比如 dockerd.

单击菜单栏中的 docker 图标,首选项,高级

安装 socat 命令:brew install socat 选择一个端口:(在示例中为 8099)
运行: socat -d -d TCP-L:8099,fork UNIX:/var/run/docker.sock
然后使用 tcp://localhost:8099 作为 API URL

对我有用,希望对你有帮助

如果您想在 mac 上进行任何特定配置,您可能已经安装了 Docker Desktop。 Docker 桌面支持使用下面屏幕截图中显示的用户界面进行配置。

get around the use of dockerd by some other method. (2016)

请注意,在 2022 年,您可以完全不使用 dockerd/Docker 桌面。

参见Batuhan Apaydin's article "A modern toolkit to start working with container images on macOS that meets your needs without requiring a Docker Daemon or even Docker Desktop”。

它使用lima+nerdctl

nerdctl 工具旨在 drop-in 替代 Docker 客户端

Lima 是一个管理程序,它启动 Linux 具有自动文件共享、端口转发和 containerd.

虚拟机

lima的名字来源于LInuxMAchines.

前两个大写字母的缩写

Lima 的设计类似于 WSL2,但 Lima 专注于将 macOS 作为主要目标主机。
Lima 使用 QEMU,它是一个通用的开源机器模拟器和虚拟器,作为引擎盖下的管理程序来实现虚拟化。

Lima 还可以与 Podman 等其他容器引擎一起工作,甚至可以用于 non-container 应用程序。

默认情况下,当 lima 启动 VM 时,它会以无根方式运行 buildkitdcontainerd,并下载必要的客户端工具,例如 buildctl、[=13] =].
一切都会为我们准备好。所以,剩下的就是构建、拉动和 运行 容器

对于buildkit,巴图汉提议developer-guy/buildkit-machine

buildkit-machine allows you to make buildkitd daemon accessible in your macOS environment.

To do so, it uses lima, which is a Linux subsystem for macOS, under the hood.
lima spins up a VM that runs buildkitd daemon in a rootless way which means that sock file of the buildkitd daemon is now be able to accessible from /run/user/<USERID>/buildkit/buildkitd.

所以:不再Docker桌面/dockerd,以无根模式使用容器!

有关更多信息,请参阅 Bret Fisher's video "Free Docker Desktop Alternatives: DevOps and Docker Live Show (Ep 156)”(2022 年 1 月)