Mastering Docker on Mac M1

m1的docker

  • 2021年苹果发布了自研芯片M1,对于开发者而言很多软件都需要适配,不过作为开发者效率还是杠杠的,作为Java开发者很多软件很快得到了适配。今天我们来捯饬下M1下的 docker 的使用吧

安装

点我下载arm版本

  • 下载好了之后常规安装桌面软件即可,但是安装后我发现 docker desktop 居然是 intel版的,因为intel的需要转义所以最终被我抛弃了。
  • 好在我们mac 上有一个万能工具brew , 我发现brew 上也有docker , 于是就尝试安装了brew install --cask --appdir=/Applications docker 。 安装完成之后在程序中也会出现一个dcoker desktop软件。而且是M系列的。至此我们docker就安装完成了。
  • 安装后并不能正常使用,除了docker -v 正常以外其他的docker 命令全部报错Error response from daemon: dial unix docker.raw.sock: connect:not such file or directory
  • 百度了一下网上都说打开docker desktop 后点击右上角小甲虫Reset to factory defaults

安装镜像

  • docker 安装完之后接下来肯定是安装镜像了,作为 Java 开发者我第一安装的就是 Mysqldocker pull mysql:5.6
  • 因为从一开始自己个人项目里全部使用的是mysql:5.6 , 所以这一次我习惯性的安装也是mysql:5.6 , 可惜报错了
  • 根据报错信息我们知道 docker 在远程仓库和本地仓库都没有找到与系统匹配的镜像,也就是说没找到M系列的Mysql:5.6镜像。
  • 那么M系列到底是什么版本呢?

AArch64 是 Armv8-A 架构中引入的64位状态,向后兼容 Armv7-A 和先前的32位 Arm 架构的32位状态称为AArch32。ARM64是由Apple创建的,而AARCH64 是由其他人(最著名的是GNU / GCC的)创建的。用于 aarch64 的 Apple 后端称为 arm64,而LLVM 编译器社区开发的后端称为 aarch64(因为它是64位ISA的规范名称),但是,后来将arm64 和 aarch64 两者合并,现在的后端称为aarch64。 因此,如今aarch64和 arm64 指的是同一件事。

  • 由上可知对应的是arm架构。arm架构包括aarch64arm64 所以我们需要下载 aarch64/arm64版本的镜像,那么我们去官网看看mysql最新版本的镜像是否支持arm
  • 说明docker已经支持arm版本的mysql镜像了。那么就简单了,换成最新的版本号即可。
shell 复制代码
docker pull arm64v8/mysql
  • 如果你不想安装最新的也还有其他办法,我们只需要点进入在点击arm64v8就可以看到具体有哪些版本支持了。
shell 复制代码
docker pull arm64v8/mysql:8
  • 其他镜像也是一样的操作。

启动镜像

  • 真的是一波三折,镜像下载好之后启动就出现了问题。
  • docker 的提示还是很友好的。根据提示应该是需要我们将路径设置为共享 desktop 才能有权限获取到。

常规镜像安装

镜像下载

shel 复制代码
docker pull arm64v8/mysql
docker pull redis
docker pull zhusaidong/nacos-server-m1
docker pull zookeeper
docker pull wurstmeister/kafka

容器启动

mysql

shell 复制代码
docker run -p 3306:3306 --name mymysql  --restart=always -v /opt/soft/docker/mysql/conf:/etc/mysql/conf.d -v /opt/soft/docker/mysql/logs:/logs -v /opt/soft/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d arm64v8/mysql:8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

redis

shell 复制代码
sudo docker run -p 6379:6379 --name redis -v /opt/soft/redis/redis.conf:/etc/redis/redis.conf  -v /opt/soft/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

nacos

shel 复制代码
docker run --network common-network --env MODE=standalone --name nacos -d -p 8848:8848 zhusaidong/nacos-server-m1:2.0.3

zookeeper

shell 复制代码
 docker run -d -p 2181:2181 --name zookeeper1 zookeeper

kafka

shel 复制代码
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=docker.for.mac.host.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://docker.for.mac.host.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

kafka安装参考教程

相关推荐
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
红尘散仙4 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
来杯@Java5 小时前
图书管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·mybatis·课程设计
卷毛的技术笔记5 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥5 小时前
匿名函数 lambda + 高阶函数
java·python·算法
_codemonster5 小时前
30分钟快速搭建 Spring Cloud Alibaba 微服务实战(一)
微服务·架构·毕业设计·课程设计
会编程的土豆6 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木6 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
Cosolar6 小时前
从零写一个 Attention Is All You Need
人工智能·面试·架构
adrninistrat0r6 小时前
Java调用链MCP分析工具
java·python·ai编程