MAC上用docker安装宝塔掉进的坑

23 篇文章 0 订阅

使用 Homebrew 安装

macOS 我们可以使用 Homebrew 来安装 Docker。

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

brew cask install docker

在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。

之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标()。

docker -info或者docker -v或者docker --version

如果有信息出来就说明安装成功

镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:

http://hub-mirror.c.163.com。

在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。

在列表中填写加速器地址即可。

修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。

Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

  • Docker官方提供的中国镜像库:https://registry.docker-cn.com
  • 七牛云加速器:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。

国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

 

拉取centos

docker pull centos      #默认拉取版本是8

docker pull centos:7 #数字是说要安装哪个版本的centos

宝塔Linux6.0版本是基于centos7开发的,强烈建议使用centos7.x 系统

创建容器

docker run -it -d -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -v ~/web:/www centos:7

-it是互动模式,跟本地的系统进行交互,调用的本地的终端

-v 是拷贝本地数据到容器内;

-d是以守护模式执行,后台执行不会输出在终端上;

-p是宿主机与容器的端口映射,此时将容器内部的 8888 端口映射为宿主机的 8888 端口,这样就向外界暴露了 8888 端口,可通过 Docker 网桥来访问容器内部的 8888端口了。
--privileged是以获取系统权限的形式运行,不过好像没卵用啊...


查看一下容器ID

docker ps

进入容器

docker exec -it ID /bin/bash

更新一下yum check-update -y && yum update -y && yum install initscripts screen wget -y

开始安装宝塔

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Saving to: '/www/server/panel/install/public.sh'

100%[======================================>] 3,640       --.-K/s   in 0s      

2019-12-15 13:24:12 (52.0 MB/s) - '/www/server/panel/install/public.sh' saved [3640/3640]

mv: cannot stat '/www/server/panel/data/admin_path.pl': No such file or directory
mv: cannot stat '/www/server/panel/old_data/admin_path.pl': No such file or directory
chmod: cannot access '/www/server/panel/task.py': Permission denied
chmod: cannot access '/www/server/panel/rewrite': Permission denied
。。。
。。。
tail: cannot open '/www/server/panel/logs/error.log' for reading: Permission denied
------------------------------------------------------
Error: BT-Panel service startup failed.
	done
Starting Bt-Tasks... /etc/init.d/bt: line 72: /www/server/panel/logs/task.log: Permission denied
failed
------------------------------------------------------
tail: cannot open '/www/server/panel/logs/task.log' for reading: Permission denied
------------------------------------------------------
Error: BT-Task service startup failed.
。。。
。。。
Error: BT-Task service startup failed.
=================================================
ERROR: The BT-Panel service startup failed.

安装总是存在权限问题导致安装失败,分配一下权限

chmod 777 -R /www/server

重新安装结果还是一样不行

因为安装指令会下载行的panel。zip,解压并设置权限:(323行)

chmod -R 600 ${setup_path}/server/panel

只有拥有者有读写权限

将其改为

chmod -R 777 ${setup_path}/server/panel

其他600也改为777

将301行#注释掉

209行开始将原有的data改名为old_data并新建,然后权限又丢失了

干脆直接删了这段功能代码:

if [ -f "${setup_path}/server/panel/data/default.db" ];then
		if [ -d "/${setup_path}/server/panel/old_data" ];then
			rm -rf ${setup_path}/server/panel/old_data
		fi
		mkdir -p ${setup_path}/server/panel/old_data
		mv -f ${setup_path}/server/panel/data/default.db ${setup_path}/server/panel/old_data/default.db
		mv -f ${setup_path}/server/panel/data/system.db ${setup_path}/server/panel/old_data/system.db
		mv -f ${setup_path}/server/panel/data/port.pl ${setup_path}/server/panel/old_data/port.pl
		mv -f ${setup_path}/server/panel/data/admin_path.pl ${setup_path}/server/panel/old_data/admin_path.pl
	fi

	#unzip -o panel.zip -d ${setup_path}/server/ > /dev/null

	if [ -d "${setup_path}/server/panel/old_data" ];then
		mv -f ${setup_path}/server/panel/old_data/default.db ${setup_path}/server/panel/data/default.db
		mv -f ${setup_path}/server/panel/old_data/system.db ${setup_path}/server/panel/data/system.db
		mv -f ${setup_path}/server/panel/old_data/port.pl ${setup_path}/server/panel/data/port.pl
		mv -f ${setup_path}/server/panel/old_data/admin_path.pl ${setup_path}/server/panel/data/admin_path.pl
		if [ -d "/${setup_path}/server/panel/old_data" ];then
			rm -rf ${setup_path}/server/panel/old_data
		fi
	fi

	rm -f panel.zip

执行sh install.sh

还是没得:

IOError: [Errno 13] Permission denied: 'data/port.pl'
------------------------------------------------------
Error: BT-Panel service startup failed.

...

最后最后最后,找到修改权限的地址:

panel\class\jobs.py (4 hits)
    Line 62:     public.ExecShell("chmod -R  600 /www/server/panel/data;chmod -R  600 /www/server/panel/config;chmod -R  700 /www/server/cron;chmod -R  600 /www/server/cron/*.log;chown -R root:root /www/server/panel/data;chown -R root:root /www/server/panel/config")

将600改为777,

再次sh install.sh

终于出现:

Failed to get D-Bus connection: Operation not permitted
Error: DBUS_ERROR: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
==================================================================
Congratulations! Installed successfully!
==================================================================
Bt-Panel: http://IP:8888/fa703b7b
username: uxfwzyvh
password: e169a4d1
Warning:
If you cannot access the panel, 
release the following port (8888|888|80|443|20|21) in the security group
==================================================================
Time consumed: 1 Minute!

返回的是外网ip,打不开,

其他操作:
yum install net-tools -y
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0

结果是用http://127.0.0.1:8888/fa703b7b打开宝塔界面了

登录提示:

抱歉,程序异常
您请求的页面因发生异常而中断!

退出exit

保存容器设置:

docker commit 8896f3801dd1 centos:7

停止容器

docker stop $(docker ps -a -q)

换个方式创建容器:

默认:

docker run -it -d -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -v ~/web:/www centos:7

改为:

docker run -d -it --privileged=true -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -v ~/web:/www centos:7 /usr/sbin/init 
#不行 unknown flag: --privileged

docker run -it -d -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -v ~/web:/www centos:7 /usr/sbin/init

#unknown shorthand flag: 'Â' in - -p

docker run -d -it --privileged -v ~/web:/www centos:7 /usr/sbin/init

#虽然可以执行,但是端口不开放

最后:

docker run -d -it -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 --privileged -v ~/web:/www centos:7 /usr/sbin/init

/etc/init.d/bt

===============宝塔面板命令行==================
(1) 重启面板服务           (8) 改面板端口
(2) 停止面板服务           (9) 清除面板缓存
(3) 启动面板服务           (10) 清除登录限制
(4) 重载面板服务           (11) 取消入口限制
(5) 修改面板密码           (12) 取消域名绑定限制
(6) 修改面板用户名         (13) 取消IP访问限制
(7) 强制修改MySQL密码      (14) 查看面板默认信息
(22) 显示面板错误日志      (15) 清理系统垃圾
(23) 关闭BasicAuth认证     (16) 修复面板(检查错误并更新面板文件到最新版)
(24) 关闭谷歌认证          (17) 设置日志切割是否压缩
(25) 设置是否自动备份面板  (18) 设置是否保存文件历史副本
(0) 取消
===============================================
请输入命令编号:1
===============================================
正在执行(1)...
===============================================
Stopping Bt-Tasks...	done
Stopping Bt-Panel...	done
Starting Bt-Panel.....	done
Starting Bt-Tasks... 	done

执行sh install.sh

密码变成a74553be,登录结果还是程序异常。

执行面板里面的16升级面板,然后再重新配置权限重启面板就能正常使用了

 

 

 

查看镜像

docker images


停止容器

docker stop containerId  //容器ID,好像不行

停止所有容器

docker stop $(docker ps -a -q)

删除所有容器

docker rm $(docker ps -a -q)

删除镜像

docker rmi REPOSITORY:TAG  #(或者镜像id)命令

docker rmi centos

直接用 exit 就可以退出,但是docker是不会保存你再容器中做过的修改的,

第二次进来容器,之前安装过的东西都得重新安装一遍

解决办法:https://blog.csdn.net/qq_41342577/article/details/80958195


其他参考:

https://blog.csdn.net/m0_38002303/article/details/82496300

https://blog.csdn.net/weixin_42555131/article/details/82593360

https://blog.csdn.net/weixin_34248258/article/details/85496410

https://blog.csdn.net/u011126065/article/details/94332512

https://blog.csdn.net/sunnyfg/article/details/80611056

https://blog.csdn.net/z13615480737/article/details/88363984

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值