这几天装了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 或入口点 指向该程序!
再次启动容器,运行成功!