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

相关推荐
一颗花生米。10 分钟前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式
问道飞鱼10 分钟前
Java基础-单例模式的实现
java·开发语言·单例模式
ok!ko4 小时前
设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)
java·设计模式·原型模式
2401_857622664 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589364 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰5 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
哎呦没5 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch6 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
编程、小哥哥6 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程7 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统