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安装参考教程

相关推荐
Ivanqhz8 小时前
矩阵引擎的数据流模式与 BM1684X 架构
java·服务器·网络·深度学习·神经网络
小蒜学长8 小时前
大学生健康饮食的智慧管理系统(代码+数据库+LW)
java·后端·springboot·大学生·健康饮食
计算机毕设定制辅导-无忧学长8 小时前
《基于SpringBoot的中学教师数字胜任力测评网站的设计与实现》
java·vue.js·spring boot·mysql·中学教师数字胜任力测评网站
智慧物业老杨9 小时前
人机协同的物业服务重构:技术落地路径与系统化思考
java·大数据·人工智能·重构·系统架构
小蒜学长9 小时前
基于Java的论坛数据可视化分析系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·数据可视化·论坛系统
许彰午9 小时前
52-useWebSocket自动重连
java·低代码·架构
青山木9 小时前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq
黑马程序员毕设9 小时前
基于微信小程序的二手交易平台设计与实现报告
前端·人工智能·spring boot·后端·考研
xcl09259 小时前
上海24小时自助健身房系统软件开发实战与架构解析
java·spring boot
cAuth9 小时前
实现一个图形编辑器
前端·架构·计算机图形学