标题: 在docker中手动安装宝塔面板(bt.cn)
时间: 2021-12-22发布,2022-10-26修改
docker rm -f bt
删除宝塔容器就能消除所有影响(网站数据不会丢失,因为数据在主机的/www
目录,不在容器内),再执行mv /www /www.old
重命名/www
文件夹,就能再用下面的方法重新安装宝塔。# 安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#(x86_64)启动一个 CentOS 7 容器
#(你也可以换成别的,但是 CentOS 7 是宝塔的参考发行版,选 CentOS 7 才能让宝塔的“极速安装”功能生效)
#(“极速安装”功能仅限x86_64,因为宝塔没有给arm64编译rpm包,所以arm64还是要编译安装)
docker run -d --restart=always --name bt -it --network host --tmpfs /tmp:exec --tmpfs /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /www:/www centos:7 /sbin/init
#(arm64)启动一个 OpenEuler 容器
#(不建议 arm64 使用 CentOS 7 容器,因为 gcc 版本太低,编译 memcached 的时候会失败)
#(所以这里换成华为的 OpenEuler 容器)
docker run -d --restart=always --name bt -it --network host --tmpfs /tmp:exec --tmpfs /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /www:/www openeuler/openeuler:20.03 /sbin/init
# 进入容器
docker exec -it bt bash
# (在容器内执行)修复安装软件包时出现 Unable to get systemd shutdown inhibition lock 的问题
[ -e /usr/bin/docker ] || sed -i 's/%__transaction_systemd_inhibit/#%__transaction_systemd_inhibit/g' /usr/lib/rpm/macros
# (在容器内执行)禁用不需要的服务
[ -e /usr/bin/docker ] || systemctl disable auditd.service systemd-hostnamed.service systemd-networkd-wait-online.service NetworkManager-wait-online.service NetworkManager.service
[ -e /usr/bin/docker ] || systemctl stop systemd-hostnamed.service systemd-networkd-wait-online.service NetworkManager-wait-online.service NetworkManager.service
[ -e /usr/bin/docker ] || systemctl set-default multi-user.target
exit
docker restart bt
docker exec -it bt bash
# (在容器内执行)安装宝塔
yum install -y wget cronie initscripts && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
# 停止
docker stop bt
# 启动
docker start bt
# 重启
docker restart bt
网站根目录位于/www
,在容器外也能访问。如果要在容器外替换/www
文件夹,请先停止容器,否则替换不会生效。
--restart=always
)。--network=host
),所以宝塔开启的任何服务都能直接被外界访问。『回复列表(24|显示机器人聊天)』
备注1:请安装cronie
软件包,否则会缺少计划任务功能,证书不能自动续期。我已更新教程,补充了该软件包。
docker exec -it bt bash
yum install cronie
装好后检查宝塔的计划任务,如果是停用,记得点启用。
备注2:CentOS 7 docker需要安装 initscripts
,否则 MySQL 无法重启
docker exec -it bt bash
yum install initscripts
@老虎会游泳 老虎,我是来掘坟的;初玩 docker 不久,请教两个问题,如果不忙的话
我看你这里底层景象是 centos7,然后 exec -d /sbin/init
拉起一个容器,然后依托 systemd(/sbin/init)守护后续安装的 php-fpm mysql 其它服务,我不知道我这样理解对不对哈。
然后问题来了,如果我是基于alpine 镜像制作另外一个应用写dockerfile
的时候,直接写 apk install openrc,然后具体的应用再rc-update add AAA rc-update add BBB
,然后cmd /sbin/openrc-run
;单纯探讨,如果这样玩 行得通吗
~~~