linux – 在分离模式下启动的docker容器在进程执行后停止

我使用以下命令在分离模式下创建docker容器:

docker run [OPTIONS] --name="my_image" -d container_name /bin/bash -c "/opt/init.sh"

所以我需要在创建容器时执行“/opt/init.sh”.我看到脚本完成执行后容器停止了.

如何在容器创建时使用脚本/服务执行来保持容器的分离?

最佳答案 有两种运行docker容器的模式

>分离模式 – 此模式执行命令并在命令完成后终止容器
>前台模式 – 此模式运行bash shell,但在退出shell后也会终止容器

你需要的是背景模式.这不是参数中给出的,但有很多方法可以做到这一点.

>在分离模式下运行无限命令,因此命令永远不会结束,容器永远不会停止.我通常只使用“tail -f / dev / null”,因为它的重量非常轻,而且大多数linux映像中都存在/ dev / null

docker run -d –name=name container tail -f /dev/null

然后你可以像这样打入运行容器:

docker exec -it name /bin/bash -l

如果你使用-l参数,它将以登录模式登录,它将像普通的bash登录一样执行.bashrc.否则,您需要手动再次打包

>入口点 – 您可以创建任何sh脚本,例如/entrypoint.sh.在entrypoint.sh中,您也可以运行任何永不结束的脚本

#!/bin/sh

#/entrypoint.sh

service mysql restart

tail -f /dev/null <- this is never ending

保存此entrypoint.sh后,chmod a x,退出docker bash,然后像这样启动它:

docker run –name=name container –entrypoint /entrypoint.sh

这允许每个容器都有自己的启动脚本,您可以运行它们而无需担心每次都附加启动脚本

点赞