1.查看容器ID或名称:

docker ps

2.连接到正在运行的Docker容器

首先,我们需要连接到正在运行的Docker容器。我们可以使用docker exec命令来实现这一步骤。

docker exec -it <容器ID或名称> /bin/sh

这行代码中,docker exec表示执行在容器中执行命令,-it参数表示以交互式的方式连接到容器,<容器ID或名称>是你要连接的Docker容器的容器ID或名称,/bin/sh是要执行的shell命令。

3.实操

接下采用彩虹聚合DNS管理系统和1Panel

1.创建文件

在1Panel安装彩虹聚合DNS管理系统的目录创建个.sh文件,我这创建dns.sh
内容在彩虹聚合DNS管理系统-容灾切换-运行概览-操作说明-第2条
下面是我的执行命令

sleep 20   # 延迟20秒启动(我使用的彩虹聚合DNS管理系统,需要数据库启动了执行才有用。不需要的可以删除或者改成0)
cd /www/sites/dns/index/ && php think dmtask

2.查看容器ID或名称:

docker ps

会显示一堆内容,我这截取ID和名称
CONTAINER ID NAMES
212cfc09b7ed 1Panel-php7-3T4d

3.执行命令

我这采用ID来操作,我创建的文件是dns.sh(目录:/www/sites/dns/index/这个和你在彩虹聚合DNS管理系统-容灾切换-运行概览-操作说明-第2条的一样)

docker exec -it 212cfc09b7ed /bin/sh /www/sites/dns/index/dns.sh

直接执行PHP我这还不会,只能创建.sh文件来实现。2024.6.1学会了

docker exec 212cfc09b7ed sh -c "php /www/sites/dns/index/think dmtask"

docker好像会自动挂后台,不像直接执行的退出就不行了

4.开机自启动

采用直接执行PHP需要加sleep 20 # 延迟20秒启动 (我使用的彩虹聚合DNS管理系统,需要数据库启动了执行才有用。)
输入命令:

vi /etc/rc.local

Debian 系统 /etc/rc.local 文件(centos 文件 /etc/rc.d/rc.local)
输入 i 编辑,把:

sleep 20;docker exec 212cfc09b7ed sh -c "php /www/sites/dns/index/think dmtask"

放进去,按 Esc 然后输入 :wq! 回车保存退出