目录

docker镜像的逆向分析

需求

如何用bash启动一个什么也不执行的容器

注意,如果您尝试同时使用 -it-d则Docker会忽略 -it 选项,并将 -d 的行为应用于容器。例如,以下命令会在后台启动一个交互式终端并立即返回控制台:

1
docker run -it -d --name my-container ubuntu

说明

以下实验,我以一个数据库tdengine为例:

正常后台启动

1
sudo docker run -d  --name tdengine_d   tdengine/tdengine:2.4.0.7 

进入容器查看其进程

1
2
3
root@7fe2ac01f161:~/TDengine-server-2.4.0.7# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0   4632  1744 ?        Ss   12:56   0:00 /bin/sh /usr/bin/entrypoint.sh taosd

可以看到官方的启动命令/bin/sh /usr/bin/entrypoint.sh taosd

交互界面执行启动(然后放入后台)

1
sudo docker run -it  --name tdengine_it   tdengine/tdengine:2.4.0.7 bash

然后此时我们使用Ctrl+PCtrl+Q的方式退出容器的控制台,此时容器就会在后台运行。

进入容器查看其进程

1
2
3
root@019c7bcd3a90:~/TDengine-server-2.4.0.7# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.0   4632  1588 pts/0    Ss   13:33   0:00 /bin/sh /usr/bin/entrypoint.sh bash

itd一次性搞定性的命令

1
sudo docker run -it -d  --name tdengine_itd   tdengine/tdengine:2.4.0.7 bash

进入容器查看其进程

1
2
3
root@9f920168e499:~/TDengine-server-2.4.0.7# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.4  0.0   4632  1624 pts/0    Ss   13:36   0:00 /bin/sh /usr/bin/entrypoint.sh bash

ref

https://blog.csdn.net/acmman/article/details/83927649