这几天装了Docker,后来想再建个站,机器本身就装有站点,这一搞就要出问题了!于是想到Docker中装宝塔!奈何是arm机器,一开始没注意,后来发现系统架构问题。docker靠前的镜像大多是arm64的,根本无法在arm里运行。又去 Docker Hub Container Image Library,找到了合适的镜像,等我搭建好后!ip:8888 无法访问,进容器终端发现 宝塔面板服务压根没有运行,玩我是吧。。。。。。。。

直接在 容器的CMD 或入口点写

bt start

不行,容器启动后又停止了!

原本在容器的CMD 或入口点写

/bin/bash

也就是说,容器启动后 容器的CMD 或入口点 的命令不能中途退出或执行结束!

这样啊!嘿嘿那就这样吧...

bt start;/bin/bash

还是运行不了!

网上的很多方法出的是莫名其妙的错误!

不过,还有一招,直接用c编译一个Linux程序后,宝塔启动的命令可交给程序!

/root/docker/bt/autostart.c

中写入

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(){
	printf("Welcome to Autostart!");
	system("bt start");
	system("/bin/bash");
}

注:要在运行环境的架构中编译,否则程序又出错了!

开始编译....

注:我的当前目录是在autostart.c下的

gcc autostart.c

得到一个文件

a.out

让容器绑定 宿主机的一个目录,将a.out放到目录下!

然后,容器的CMD 或入口点 指向该程序!

再次启动容器,运行成功!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐