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

相关推荐
坊钰25 分钟前
【Java 数据结构】移除链表元素
java·开发语言·数据结构·学习·链表
chenziang130 分钟前
leetcode hot100 LRU缓存
java·开发语言
会说法语的猪36 分钟前
springboot实现图片上传、下载功能
java·spring boot·后端
码农老起36 分钟前
IntelliJ IDEA 基本使用教程及Spring Boot项目搭建实战
java·ide·intellij-idea
m0_7482398341 分钟前
基于web的音乐网站(Java+SpringBoot+Mysql)
java·前端·spring boot
时雨h1 小时前
RuoYi-ue前端分离版部署流程
java·开发语言·前端
凡人的AI工具箱1 小时前
每天40分玩转Django:实操多语言博客
人工智能·后端·python·django·sqlite
Cachel wood1 小时前
Django REST framework (DRF)中的api_view和APIView权限控制
javascript·vue.js·后端·python·ui·django·前端框架
麒麟而非淇淋1 小时前
Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格
java