mac M芯片运行docker-desktop异常问题

虽然mac已经迭代到m4了,但官方的docker-desktop运行仍然有问题,包括但不限于:

  • 命令行docker找不到
  • docker-desk打不开
  • docker-desktop闪退
  • 容器起不来

尝试不同版本后,看到了其他可以在mac跑docker的开源方法,更简单、轻量,抛弃官方的方法。

参考文字:https://tutorials.tinkink.net/zh-hans/mac/how-to-use-docker-on-m1-mac.html

Lima

Lima 是一个免费的开源软件,同样使用 QEMU 来处理不同架构的虚拟化问题。和 Docker Desktop For Mac 不同的是,它的容器软件使用的是 Containerd 而不是 Docker。

在容器的发展历史中,一开始只有 Docker ,但随后社区希望容器可以标准化,因此诞生了 CRI 标准。Containerd 是一个这个标准的一种实现,Docker 也同样遵守这个标准。因此 Containerd 与 Docker 在使用时几乎可以兼容。

按照官方教程,使用 Homebrew 安装 lima 之后就可以使用了:

# 安装
brew install lima
# 启动
limactl start

此时就可以使用nerdctl来进行 Containerd 的各种操作。

lima nerdctl run -d --name nginx -p 80:80 nginx:alpine
可以看到,lima nerdctl的使用与docker几乎一模一样。使用完成后除了将容器关掉外,还可以将虚拟化环境也关闭,以节约内存:

limactl stop
lima 还可以设置非常多虚拟化的细节,也可以设置多个虚拟环境。更多使用细节可查看官方文档:<(https://github.com/lima-vm/lima>

Colima

Colima 是一个基于 Lima 的封装,同样是免费的开源软件,但是它的容器软件使用的是 Docker。

Colima 的安装使用也非常简单:

# 如果你没有安装过 docker 客户端,需要先安装
brew install docker
# 安装 colima
brew install colima
使用时,只需要使用 colima 命令即可:

colima start
待启动完成后,就可以正常使用docker命令了,不需要额外进行其它的设置。

使用完成后同样可以将虚拟化环境关闭:

colima stop

OrbStack

“OrbStack 是在 macOS 上运行 Docker 容器和 Linux 机器的快速、轻量、简单的方式。您可以将其视为超级 WSL 和 Docker Desktop 的 macOS 版本,所有这些都在一个易于使用的应用程序中。”(来自官方网站。)

OrbStack 提供了一个 GUI 界面来管理 macOS 上的 Docker 容器和 Linux 机器。以及一个命令行界面。

您可以从官方网站下载:https://orbstack.dev/,或使用 Homebrew 安装:

brew install --cask orbstack

只需启动 OrbStack,您现在就可以使用 Docker 了。

在这里插入图片描述

小结
Apple Silicon 芯片的 Mac 设备使用 Docker 不是很容易
Docker Desktop For Mac 可用,但是对大中型公司收费
Lima & Colima 是免费开源的解决方案
OrbStack 是一个 GUI 解决方案

### 安装 Docker Desktop 后触发问题的解决方案 安装 Docker Desktop 后可能会遇到各种问题,这些问题可能源于系统配置、软件冲突或其他环境因素。以下是针对常见问题的具体分析和解决办法: #### 1. **验证 Docker 是否正常工作** 如果不确定 Docker 是否成功安装或者是否存在基本功能异常,可以通过以下命令来确认版本信息并测试其运行状态: ```bash docker --version ``` 此命令会返回当前已安装的 Docker 版本号[^1]。如果没有输出任何有效信息,则说明 Docker 的核心服务未启动或存在其他潜在问题--- #### 2. **Docker 更新引发的问题** 当 Docker 客户端被更新到最新版时,某些旧版本遗留下来的设置可能导致兼容性问题。例如,在 macOS 上,Intel 和 M1 芯片架构分别对应不同的二进制包下载链接。此时建议卸载现有版本,并通过官方提供的稳定渠道重新获取适合硬件平台的应用程序文件: - 对于 Intel 架构设备,请访问: https://desktop.docker.com/mac/stable/amd64/Docker.dmg[^2] - 如果使用的是 Apple Silicon (M1/M2),则应改用 ARM 改编版本: https://desktop.docker.com/mac/stable/arm64/Docker.dmg 完成新镜像部署之后再次执行初始化脚本来激活全部特性集。 --- #### 3. **Node.js 干扰导致无法调用 `docker` 命令** 部分开发者环境中同时维护着多个编程工具链组件(比如 JavaScript 运行库),这些第三方依赖偶尔会造成命名空间污染现象。具体表现为即使已经正确设置了 PATH 环境变量路径仍然报错找不到目标可执行档位置的情况。 对于此类状况的一个典型例子就是 NVM(节点版本管理器)所引入的不同解释引擎实例之间相互覆盖引起的混乱局面——即当你试图输入简单的 shell 指令却意外跳转到了完全无关联的服务进程上去处理请求了! 要修复这个问题,需编辑用户的登录 Shell 初始化脚本 ~/.zshrc 或者 ~/.bash_profile 文件,确保 DOCKER_BINARY_PATH 不指向 .nvm 下面定义好的子目录结构内部去寻找实际不存在的东西而是回到原始发行商预设的标准布局上来定位真正的 dockerd 实体所在之处。修改完毕后再重启终端窗口使更改生效即可恢复正常操作流程[^3]. ```bash export PATH="/usr/local/bin:$PATH" unset -v DOCKER_HOST unset -v DOCKER_TLS_VERIFY unset -v DOCKER_CERT_PATH ``` 上述代码片段展示了如何调整全局搜索顺序优先级以及清除掉之前残留下来的影响因子从而让整个生态系统恢复健康运转模式下的行为表现特征. --- #### 总结 以上列举了几种典型的因 Docker Desktop 设置不当而产生的错误场景及其对应的纠正措施。每一步骤都旨在帮助用户快速诊断并排除障碍以便顺利开展后续开发活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

THMAIL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值