前言

本文记录一次完整的实践:在鸿蒙 OpenHarmony 的 Docker 镜像中安装宝塔面板。从拉取华为云 SWR 上的 OpenHarmony 镜像、启动并进入容器,到给容器内的 install_lts.sh 脚本授权、升级容器系统,再到最终跑通宝塔面板稳定版 9.0-lts 的安装流程,每一步都配有实际命令与运行截图。

读完本文,你可以获得:

  • 一套可直接复现的操作步骤,照着敲命令即可在 OpenHarmony 容器里跑起宝塔面板;
  • 对 Permission denied、时区选择、端口放行等常见卡点的处理思路;
  • 对容器化部署面板类应用的边界与注意事项的基本认识,避免在生产环境中踩坑。

说明:本文以学习与实验为目的,容器内安装的面板仅建议用于测试环境。

一、Docker镜像介绍

swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker
这个镜像来自华为云容器镜像服务(SWR),具体位置是在华为云华南 - 1 区(cn - south - 1)的服务器上。“openharmony - docker/openharmony - docker” 是镜像在仓库中的路径和名称。其中 “openharmony - docker” 可能是组织或项目名称相关的命名空间,用于区分不同的用户或项目组的镜像,后面的 “openharmony - docker” 则是具体的镜像名称。

二、拉取鸿蒙

docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker

在这里插入图片描述

启动容器

docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0

在这里插入图片描述
进入容器后查看容器内系统,你会发现是一个很古老的版本:Ubuntu 18.04.5 LTS
在这里插入图片描述
再逛逛发现该 Docker 镜像内有一个安装文件 install_lts.sh,看看这是什么鬼?
在这里插入图片描述
使用 cat 查看一下,发现原来是宝塔安装代码,由于代码太长,在此忽略。

root@d88f55c114a3:/home/openharmony# cat install_lts.sh

三、熟悉环境

运行一下 install_lts.sh 代码,见下图
在这里插入图片描述
出现 “bash:./install_lts.sh: Permission denied” 这个错误提示,是因为你当前没有执行 install_lts.sh 这个脚本文件的权限。
要解决这个问题,可以按照以下步骤操作:
赋予执行权限:
在终端中输入以下命令来给脚本文件添加可执行权限。
chmod +x install_lts.sh
这条命令会修改 install_lts.sh 文件的权限,使得它可以被执行。其中 chmod 是用于改变文件或目录权限的命令,+x 表示添加可执行权限。
再次尝试执行:
在赋予了可执行权限之后,再次运行脚本:
./install_lts.sh
这样应该就可以正常执行该脚本了,不过要注意确保脚本本身的内容没有其他错误导致执行失败哦。

四、容器内升级

apt update
apt upgrade

通过升级你会发现ubtuntu的版本由 Ubuntu 18.04.5 LTS变为Ubuntu 18.04.6 LTS了。
在这里插入图片描述

五、安装的是宝塔面板稳定版-9.0-lts

root@d88f55c114a3:/home/openharmony# ./install_lts.sh
+----------------------------------------------------------------------
| Bt-WebPanel FOR CentOS/Ubuntu/Debian
+----------------------------------------------------------------------
| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved.
+----------------------------------------------------------------------
| The WebPanel URL will be http://SERVER_IP:12086 when installed.
+----------------------------------------------------------------------
| 为了您的正常使用,请确保使用全新或纯净的系统安装宝塔面板,不支持已部署项目/环境的系统安装
+----------------------------------------------------------------------
| 当前您正在安装的是宝塔面板稳定版-9.0-lts
+----------------------------------------------------------------------
Do you want to install Bt-Panel to the /www directory now?(y/n): y

等待一时出现如下所示代码,这里要进行一些选择:Geographic area: 6 、Time zone: 70

Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are
located.
 1. Africa   3. Antarctica  5. Arctic Ocean  7. Atlantic Ocean  9. Indian Ocean    11. System V timezones  13. None of the above
 2. America  4. Australia   6. Asia          8. Europe          10. Pacific Ocean  12. US
Geographic area: 6
Please select the city or region corresponding to your time zone.

  1. Aden      10. Bahrain     19. Chongqing  28. Harbin            37. Jerusalem    46. Kuala Lumpur  55. Novokuznetsk  64. Qyzylorda      73. Taipei         82. Ulaanbaatar
  2. Almaty    11. Baku        20. Colombo    29. Hebron            38. Kabul        47. Kuching       56. Novosibirsk   65. Rangoon        74. Tashkent       83. Urumqi
  3. Amman     12. Bangkok     21. Damascus   30. Ho Chi Minh City  39. Kamchatka    48. Kuwait        57. Omsk          66. Riyadh         75. Tbilisi        84. Ust-Nera
  4. Anadyr    13. Barnaul     22. Dhaka      31. Hong Kong         40. Karachi      49. Macau         58. Oral          67. Sakhalin       76. Tehran         85. Vientiane
  5. Aqtau     14. Beirut      23. Dili       32. Hovd              41. Kashgar      50. Magadan       59. Phnom Penh    68. Samarkand      77. Tel Aviv       86. Vladivostok
  6. Aqtobe    15. Bishkek     24. Dubai      33. Irkutsk           42. Katmandu     51. Makassar      60. Pontianak     69. Seoul          78. Thimphu        87. Yakutsk
  7. Ashgabat  16. Brunei      25. Dushanbe   34. Istanbul          43. Khandyga     52. Manila        61. Pyongyang     70. Shanghai       79. Tokyo          88. Yangon
  8. Atyrau    17. Chita       26. Famagusta  35. Jakarta           44. Kolkata      53. Muscat        62. Qatar         71. Singapore      80. Tomsk          89. Yekaterinburg
  9. Baghdad   18. Choibalsan  27. Gaza       36. Jayapura          45. Krasnoyarsk  54. Nicosia       63. Qostanay      72. Srednekolymsk  81. Ujung Pandang  90. Yerevan
Time zone: 70

选择好后回车,然后等待一段时间,等待安装完成。

==================================================================
Congratulations! Installed successfully!
=============注意:首次打开面板浏览器将提示不安全=================
 请选择以下其中一种方式解决不安全提醒
 1、下载证书,地址:https://dg2.bt.cn/ssl/baota_root.pfx  双击安装,密码【www.bt.cn】
 2、点击【高级】-【继续访问】或【接受风险并继续】访问
 教程:https://www.bt.cn/bbs/thread-117246-1-1.html
 mac用户请下载使用此证书:https://dg2.bt.cn/ssl/baota_root.crt
========================面板账户登录信息==========================
 【云服务器】请在安全组放行 12086 端口
 外网面板地址: http://39.146.136.42:12086/af77443c
 内网面板地址: http://:12086/af77443c
 username: no2ezitv
 password: 85f386fe

 浏览器访问以下链接,添加宝塔客服
 https://www.bt.cn/new/wechat_customer
==================================================================
Time consumed: 38 Minute!
root@d88f55c114a3:/home/openharmony#

在这里插入图片描述
在这里插入图片描述

面板安装完成后,如果希望以「后台常驻」的方式运行面板,可以用下面这条命令启动一个守护容器:

docker run -dit --name bt-panel -p 8888:8888 -p 888:888 -v /www/wwwroot:/www/wwwroot -v /www/server/panel:/www/server/panel -v /www/backup:/www/backup -v /etc/localtime:/etc/localtime:ro -e bt_password='你的面板登录密码' --privileged=true baotaospace/bt-daemon

这条命令的参数较多,逐个拆开看会更清楚:

  • -dit:-d 表示后台(detached)运行,-i 保持标准输入打开,-t 分配一个伪终端。三者组合让容器在后台常驻,同时仍可用 docker exec -it bt-panel bash 进入。
  • --name bt-panel:给容器起一个固定名字,后续 docker start/stop/exec/logs bt-panel 都可以直接用名字操作,不必记容器 ID。
  • -p 8888:8888:把宿主机 8888 端口映射到容器 8888 端口,用于面板的 HTTP 访问。
  • -p 888:888:把宿主机 888 端口映射到容器 888 端口,通常用于面板的 HTTPS / 备用访问端口。
  • -v /www/wwwroot:/www/wwwroot:挂载网站根目录。站点文件放在宿主机上,容器重建后网站数据不会丢失。
  • -v /www/server/panel:/www/server/panel:挂载面板程序目录,保留面板自身的配置、插件与运行数据。
  • -v /www/backup:/www/backup:挂载备份目录,数据库与站点备份落到宿主机,便于迁移和容灾。
  • -v /etc/localtime:/etc/localtime:ro:以只读方式挂载宿主机时区文件,保证容器内时间与宿主机一致,避免计划任务、日志时间错乱。
  • -e bt_password='你的面板登录密码':通过环境变量传入面板初始登录密码,容器首次启动时自动设置,省去手动初始化。请替换成自己的强密码,不要直接照抄示例。
  • --privileged=true:给容器近乎完整的宿主机权限,面板需要执行系统级操作(如安装软件、管理服务)时才能正常工作。该参数会显著放大容器权限,务必只在可信镜像与测试环境中使用。
  • baotaospace/bt-daemon:使用的镜像名,这是一个以守护方式运行面板的镜像,与前面 OpenHarmony 镜像里手动执行 install_lts.sh 的方式不同。

与前面交互式启动的区别

前面「启动容器」一节用的是 docker run -it ... openharmony-docker:1.0.0,属于交互式启动:命令执行后直接进入容器 shell,容器随终端会话存在,退出 shell 容器即停止。它适合边看边敲、逐步安装调试的场景,本文前面拉取镜像、授权脚本、升级系统、安装面板都是在这种模式下完成的。

而这里的 docker run -dit ... bt-daemon 属于后台常驻启动:容器在后台持续运行,不占用当前终端,配合 --name、端口映射与目录挂载,更像一个长期在线的服务实例。它适合面板已经装好、需要稳定对外提供访问的场景。

简单来说:交互式启动用于「装」,后台常驻启动用于「用」。调试阶段用 -it 方便观察输出,正式运行时用 -dit 加挂载与端口映射保证数据持久化和服务可用。

总结

回顾整个流程,关键步骤可以归纳为五步:

  1. 拉取镜像:docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker,镜像来自华为云 SWR 华南-1 区。
  2. 启动容器:用 docker run -it -v $(pwd):/home/openharmony ...:1.0.0 以交互方式进入容器,并把当前目录挂载到 /home/openharmony,方便宿主机与容器交换文件。
  3. 授权脚本:容器内的 install_lts.sh 默认没有执行权限,直接运行会报 Permission denied,需要先 chmod +x install_lts.sh 再 ./install_lts.sh。
  4. 容器内升级:执行 apt update && apt upgrade,系统由 Ubuntu 18.04.5 LTS 升级到 18.04.6 LTS,为后续安装打好基础。
  5. 安装宝塔面板:运行 ./install_lts.sh,按提示确认安装目录 /www,时区依次选择 Geographic area: 6(Asia)与 Time zone: 70(Shanghai),等待约 38 分钟即可看到安装成功信息与面板登录地址、账号密码。

几点注意事项:

  • 安装完成后务必记下面板地址、用户名与密码,并确认云服务器安全组已放行面板端口(本文为 12086)。
  • 首次访问面板浏览器会提示证书不安全,可按提示下载证书安装,或选择「高级 - 继续访问」。
  • 容器内安装的面板数据默认随容器生命周期存在,建议通过 -v 挂载 /www/wwwroot、/www/server/panel、/www/backup 等目录做持久化,并挂载 /etc/localtime 保证时区一致。
  • 面板类应用对系统权限要求较高,示例中的 --privileged=true 会放大容器权限,仅建议在测试环境使用,生产环境请谨慎评估。
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐