出于开源项目的需要,我准备把之前在 Windows 下运行的开源项目移植到 Mac 上跑得试下,但是之前 Mac M1 芯片并不能很好地支持 Docker,这不,发现 Docker 也正式
支持 Mac 了,M1 看了 Docker 的芳容,竟悄悄爱上了 Docker。
本文主要内容如下:
之前 Docker 只支持在 Intel 芯片的 X86 架构上运行,Docker 已经正式支持苹果 M1 芯片了,而 M1 芯片是 ARM 架构的,所以说 Docker 真的是太强大了,短短几个月就适配了苹果最新的系统!
这不就是官宣 Docker 帅哥要追 M1 妹纸么?
悟空到官网上看了下,2021-04-15 发布的正式版:Docker Desktop 3.3.1,而且可以直接下载。
官网地址:https://docs.docker.com/docker-for-mac/apple-silicon/
这个 Desktop 包含很多功能:
另外在 M1 上运行 Docker 还有些条件需要满足。
因为 M1 比较前卫,所以需要安装 Rosetta 软件来进行兼容。
必须安装 Rosetta ,因为某些二进制文件仍是Darwin / AMD64。要从命令行手动安装Rosetta 2,请运行以下命令:
softwareupdate --install-rosetta
Docker 官方有望在将来的版本中修复此问题。
Docker 和 M1 还有许多地方需要磨合:
我试了下,确实没有合适的 mysql 镜像。
ping
从容器内部到 Internet 的连接无法正常工作。要测试网络,我们建议使用curl
或wget
。之前在 Linux 环境安装 Docker 是通过命令行安装的,但是在 Mac 上有客户端可以使用,确实方便很多。安装 Mac 版的 Docker非常方便,下载完成后的文件名叫做 Docker.dmg。双击文件后,弹出如下界面,把 Docker.app 图标拖到右边 Appliactions 就可以了,就像左手拉右手
。
Docker 帅哥成功牵手 M1。
安装完成后,在应用程序中找到 Docker,双击打开就可以了。
接着就可以看到 Docker 在菜单栏中有显示。
打开的界面,会提示没有容器正在运行,客户端提示执行以下命令启动一个新的容器。
docker run -d -p 80:80 docker/getting-started
我们将命令拷贝到控制台后运行,如下图所示:
然后我们来check 下容器是否创建和启动成功。通过以下命令来查看 docker 容器的运行状态。
docker ps
我们同样可以通过 Docker 客户端来查看容器状态:容器正在运行中,对应的端口号是 80。如下图所示:
另外我们也可以看下有哪些镜像已经下载好了,如下图所示,目前有一个镜像:docker/getting-started。
我们打开活动监视器,可以看到打开的 docker 进程既有 Apple 架构的,也有 Intel 架构的,比如桌面 UI 用的是 Intel 架构的,但 Docker 核心应用程序用的 Apple 架构,说明虽然有部分用的 Intel 架构,但核心还是 Apple 架构,不影响使用。
再来看下内存使用情况,12 个进程,总共占用 430 M 内存,说明占用的内存并不高,性能还是可以的。
Docker 客户端还有一系列人性化的配置,优质暖男一枚。来看下有什么配置吧。
Docker 客户端,有很多人性化的通用设置。如下图所示:
还有些关于资源的高级配置也非常强大,来瞧一瞧吧。
2
GB运行时内存,该内存是从Mac上的总可用内存分配的。要增加RAM,请将其设置为更大的数字,如果要减少它,请降低数字。Docker Desktop 竟然直接支持 kubernets(K8S) ,太酷了吧!
Docker Desktop 包含一个可在 Mac 上运行的独立 Kubernetes 服务器,因此可以测试在Kubernetes上部署 Docker 的工作负载。要启用Kubernetes支持并安装作为Docker容器运行的Kubernetes独立实例,请选择Enable Kubernetes。
还有很多非常有用的功能,这里就不一一介绍了,感兴趣的可以到官网上查看哦~
Docker 对于 M1 来说,绝对是优质暖男一枚!实锤了!🔨
说了 Docker 的那么多优点,M1 终于愿意和 Docker 谈恋爱了,他们第一个约会活动
就是实战 Redis。
先让 Docker 下载个 Redis 镜像试下:
sudo docker pull redis
我们可以通过 Docker 客户端来看下镜像是否下载成功,如下图所示,确实下载成功。另外也可以通过命令 docker ps 查看。
docker run -d -p 6379:6379 redis
docker exec -it <容器 id> redis-cli
需要通过 docker ps 找到 redis 容器 id,我的机器上运行的 redis 容器 id 是 17c...,命令中可以简写,只要能识别这个容器就可以。
连接成功后,会进入到 redis 命令行。
设置a=100,返回OK
set a 100
获取a的值,返回"100"
get a
说明 docker 在 M1 上 完美运行 Redis。
另外我的开源项目中要用 Elasticsearch 和 Kibana,但是都没有适配的镜像,这就很难受了啊!
看来 Docker 和 M1 还有很长的路要走,谈恋爱磕磕碰碰
很正常,需要磨合
的还有很多,但悟空相信他们最终一定会走到一起,并过上幸福的日子~
对于 M1 和 Docker 的爱情你们怎么看?评论区见~
参考资料:
www.passjava.cn
https://github.com/Jackson0714/PassJava-Platform
https://docs.docker.com/docker-for-mac/apple-silicon
- END -