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

使用 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

### 宝塔面板的Docker部署指南 #### 准备工作 确保Linux系统的环境满足运行Docker的要求。这包括确认操作系统版本、内核版本以及已安装Docker版本均适合用于部署操作[^3]。 #### Docker安装 对于未预先配置好Docker环境的情况,在Linux中可以通过多种方式来实现Docker的手动安装,例如利用官方推荐的方法或是借助宝塔面板提供的便捷工具完成一键安装过程[^2]。 #### 创建必要文件夹结构 为了更好地管理和持久化保存数据,建议提前规划并创建相应的存储路径。这些位置将被映射到后续启动的服务容器内部作为共享卷使用,从而保障即使服务重启也不会丢失重要资料。 #### 获取宝塔镜像 通过命令行界面执行`docker pull`指令获取远程仓库中的最新版BT Panel镜像资源: ```bash docker pull registry.cn-hangzhou.aliyuncs.com/btsoft panel:latest ``` 此步骤旨在从阿里云镜像站下载经过优化处理后的稳定发行版本。 #### 启动宝塔实例 定义一组参数选项以指定新建立起来的应用程序实例的行为特征,比如暴露给外部世界的监听端口号、主机名解析设置等;同时还需要指明之前准备好的宿主机上的物理磁盘空间作为虚拟机内的根目录挂载点之一: ```bash docker run -d \ --name=bt_panel \ -p 8888:8888 \ -v /www:/www \ -v /etc/localtime:/etc/localtime:ro \ registry.cn-hangzhou.aliyuncs.com/btsoft/panel:latest ``` 上述脚本片段里包含了几个关键部分: - `-d`: 表示以后台守护进程模式开启; - `--name`: 给定唯一名称以便于管理识别; - `-p`: 实现内外网之间的TCP/IP转发关系绑定; - `-v`: 设置双向同步关联规则让两处不同设备间能够互相读写特定区域的数据流[^1]。 #### 验证部署成果 一旦前述所有准备工作顺利完成之后就可以尝试打开浏览器窗口输入http://<服务器公网IP>:8888地址栏前往初次登陆向导页面按照屏幕提示逐步完善初始化配置流程直至最终进入控制台主界面为止。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值