赞
踩
1、首先准备一台Mac M1(arm64v8架构) 说明:docker hub上要准确的选择自己电脑Cpu的架构才能成功的构建自己的镜像与容器。
M1芯片是arm64架构,也称作aarch64架构,只能运行arm64/aarch64架构的程序
2、根据自己的操作系统下载Docker Desktop for Mac and Windows | Docker
ps:如果你是mac,我相信你一定会使用 brew install --cask docker(如果你使用搜索引擎搜索下载的话一定是brew cask install docker 【官方已经取消了cask 而是使用参数 --cask】)
3、安装成功后你会面临几个后面遇到的问题让我们来先把问题抛出来
由于是M1则使用的是arm64v8/centos
docker pull arm64v8/centos:centos7
我们需要设置【主机的文件如何才能与容器中的web目录对应同步】
设置完成后我们需要创建容器并且提前为容器开出映射端口和容器的特殊权限
映射端口:使宿主机可以访问容器服务
容器的特殊权限:获取宿主机root权限
docker run -d --name dev-centos -v /opt/homebrew/var/www:/www/wwwroot/www --privileged=true -p 10022:22 -p 27017:27017 -p 10006:3306 -p 5045:80 -p 5046:8080 -p 10088:8888 arm64v8/centos:centos7 /usr/sbin/init
命令和参数解释:红色固定参数/绿色可变参数后面不在强调
docker run : 创建一个新的容器并运行一个命令
-d :使容器后台运行
--name:创建新的容器名字
dev-centos:自定义的容器名
-v : 挂载参数
/opt/homebrew/var/www:/www/wwwroot/www 宿主机挂载绝对路径:容器使用宿主机文件的绝对路径(在设置界面中如果不设置挂载路径则会报错,所以我们提前就设置好了,根据自己所需设置和配置 ps:不要设置/etc/。会无法挂载)
--privileged=true :开启容器特权模式
-p 10022:22 -p 27017:27017 -p 10006:3306 -p 5045:80 -p 5046:8080 -p 10088:8888【宿主机端口映射容器端口 当你想访问容器服务时,如访问容器的mysql服务则需要在宿主机中访问10006端口】【主机的端口号与容器端口号如何设置】
arm64v8/centos:centos7 :镜像名称
/usr/sbin/init :启动容器之后可以使用systemctl xxxxx start/stop/restart 等命令
执行如上命令会生成如下图所示:
进入容器终端,运行bash程序
docker exec -it dev-centos /bin/bash
安装宝塔
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装成功登陆后极速安装其他的不要装mysql也装不上(由于本人是php开发所以安装的php)
Index of linux/static/stable/不同架构不同版本的docker源码包
【未使用yum的原因dockerd进程守护会报错无法使用docker,虽然可以安装成功,但是不能使用太伤人了】
使用解压缩方式安装源码
1、yum install wget
3、tar zxvf docker-20.10.9.tgz
4、sudo cp docker/* /usr/bin/
5、dockerd 【这会开启docker守护进程】 开启后再开启一个命令行窗口 docker exec -it dev-centos /bin/bash 进入后使用docker run hello-world 看是否成功。守护进程不能关闭,否则docker服务就没了,这里目前没有什么好的方法可以处理,有大佬知道可以评论区交流。
6、安装mysql服务
docker pull mysql/mysql-server:latest
创建并且启动容器
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql/mysql-server
进入mysql容器授权允许宿主机访问
docker exec -it mysql bash
mysql -u root -p
输入密码xxxxx
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;
两次exit退出mysql服务及mysql容器到centos容器中
评论区解答问题:欢迎提问
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。