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

相关推荐
WaaTong20 分钟前
《重学Java设计模式》之 原型模式
java·设计模式·原型模式
m0_7430484420 分钟前
初识Java EE和Spring Boot
java·java-ee
AskHarries22 分钟前
Java字节码增强库ByteBuddy
java·后端
佳佳_37 分钟前
Spring Boot 应用启动时打印配置类信息
spring boot·后端
小灰灰__42 分钟前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
夜雨翦春韭1 小时前
Java中的动态代理
java·开发语言·aop·动态代理
程序媛小果1 小时前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林1 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨1 小时前
El表达式和JSTL
java·el
许野平2 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono