探索鸿蒙 Docker 镜像:swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker
前言
本文记录一次完整的实践:在鸿蒙 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 加挂载与端口映射保证数据持久化和服务可用。
总结
回顾整个流程,关键步骤可以归纳为五步:
- 拉取镜像:
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker,镜像来自华为云 SWR 华南-1 区。 - 启动容器:用
docker run -it -v $(pwd):/home/openharmony ...:1.0.0以交互方式进入容器,并把当前目录挂载到/home/openharmony,方便宿主机与容器交换文件。 - 授权脚本:容器内的
install_lts.sh默认没有执行权限,直接运行会报Permission denied,需要先chmod +x install_lts.sh再./install_lts.sh。 - 容器内升级:执行
apt update && apt upgrade,系统由 Ubuntu 18.04.5 LTS 升级到 18.04.6 LTS,为后续安装打好基础。 - 安装宝塔面板:运行
./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会放大容器权限,仅建议在测试环境使用,生产环境请谨慎评估。
更多推荐


所有评论(0)