背景
自从买了M1芯片的Mac之后,每当想使用某一个软件之前,都需要在百度:”mac m1 xxx软件“,然后如履薄冰地浏览搜索出来的词条,生怕看见”xxx软件尚未支持M1“这样的字眼…
好在现在M1的生态在逐渐完善,这不,博主心心念念的docker也已经支持M1啦,昨天刚用docker把一些本地经常用到的开发软件部署好,今天立马就来写博客,趁热!
Docker安装
首先我们需要下载一个Docker Desktop。
下载地址:docs.docker.com/desktop/mac…
帮大家翻译一下:
Apple 芯片上的 Docker Desktop for Mac 现已作为 GA 版本提供。这使您能够使用您的
本地开发环境的选择,并为基于 ARM 的应用程序扩展开发管道。
适用于 Apple 芯片的 Docker Desktop 还支持多平台镜像,允许您构建和运行适用于 x86 和
ARM 架构,无需设置复杂的交叉编译开发环境。此外,您可以使用
docker buildx 将多平台构建无缝集成到您的构建管道中,并使用 Docker Hub 识别和共享
提供多平台图像的存储库。
大意就是:我们支持苹果芯片啦,请放心使用吧。
下载完成后,安装,无脑下一步、下一步…
安装完成后打开,就出现这个界面啦:
(当然红框中的容器列表在刚安装完成后是空的)
这样docker在你本地已经启动啦。
我们可以通过命令行来验证一下:
docker ps
如图就说明你的docker安装没问题啦。
现在我们就来安装一些我们所需要的镜像啦。
Centos镜像
其实docker在去年已经支持M1了,但是我在M1上一直没怎么使用的原因是因为:当时还没有能运行在M1上的centos…(可能Ubuntu对于M1的支持更早,但是我比较少用Ubuntu,就一直没怎么关注)
但是现在centos也已经推出了适配M1的版本了。
我们可以先上Docker Hub看下目前centos都有哪些镜像版本:hub.docker.com/
在这里,我们就能看到所有的centos镜像的版本啦,我这里选择了这个版本
注意你选择的版本只要支持arm这种架构就好。
现在我们就把这个镜像拉到本地:
docker pull centos:centos7
拉取到本地后,查看一下:
docker images
然后我们就可以运行它啦:
docker run -d -p 5000:22 --name centos7-test --privileged=true centos:centos7 /usr/sbin/init
建立本机对应docker的centos7镜像的端口映射,将docker中centos7的22端口映射到宿主机的5000端口。
然后我们查看一下容器是否已经启动:
进入容器:
docker exec -it centos7-test /bin/bash
这样就是进入容器内部啦。
然后我们可以安装一些centos中常用的工具:
yum install net-tools -y
yum install -y openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip
yum install initscripts
上面我们安装了ssh,我们可以从外部连接到虚拟机里面来,但是需要先对ssh配置一下:
-
编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no
- 可以进入sshd_config文件中去修改,也可以使用命令:sed -i “s/UsePAM.*/UsePAM no/g” /etc/ssh/sshd_config
-
创建公私密钥,输入命令后,直接按两次enter键确认就行了
-
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
-
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
-
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
-
-
完成上述几步后,可以开启ssh服务了:
/usr/sbin/sshd -D &
-
查看服务是否已经起来了:
ps -ef | grep sshd
这样,我们通过ssh工具来连接一下:
哦豁,打完收工!
这样,我们本地的虚拟机环境,就算是搭建完成了,愉快地玩耍吧。
MySql镜像
开发中最常用的,莫过于本地搭建一个数据库了,MySql肯定是首选啦。
目前能支持M1的MySql版本好像只有8.0+的,不过不影响日常使用,盘他!
docker pull mysql/mysql-server:latest
镜像拉下来后,运行它:
docker run -itd --name mysql_local -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql/mysql-server
运行起来后,我们进入容器内部:
docker exec -it mysql_local /bin/bash
然后使用root账号登录数据:
mysql -uroot -p123456
这样我们就进来啦。
可以查看一下mysql的版本:
select version();
查看数据库:
show databases;
切换到mysql这个database:
use mysql;
查看用户权限:
select host from user;
将root用户授权更改为允许远程登录:
update user set host='%' where user='root';
刷新数据库:
flush privileges;
现在我们可以通过外部的SQL工具连接到这个MySql啦:
又能愉快地玩弄数据库啦。
Redis镜像
redis的镜像部署就相对简单粗暴一些了,完全无脑。
docker pull redis
运行它:
docker run -itd --name redis -p 6379:6379 redis
进入容器内:
docker exec -it redis /bin/bash
然后通过redis-cli命令进入redis:
又能愉快地玩弄redis了。
结尾
关于Docker部署一些常用镜像的讲解,就写到这里,后续有使用更多的镜像,再持续更新。希望这篇文章能帮助到使用M1的你少踩坑。