繁体   English   中英

为什么不以分离模式执行Docker入口点脚本?

[英]Why is Docker entrypoint script not executed in detached mode?

假设这个简单的Dockerfile:

FROM debian:stretch
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod a+x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

而entrypoint.sh看起来像这样:

#!/bin/bash
echo yyyyyyyyyyyyyyy
exec "$@"

现在,如果我构建映像并在前台创建容器,则执行入口点脚本:

$ docker build . -t mytest
[...]
$ docker run --rm -it mytest /bin/bash
yyyyyyyyyyyyyyy
root@3e3d7290b09c:/#

但是,如果我以分离模式创建容器,则不会执行该容器:

$ docker run --rm -d -it mytest /bin/bash
f8e72a222c5194f61843569ae76798bb09736fa4205b93e484f11de32df4db64

这是为什么? 或者,更重要的是,如何创建执行入口点脚本的分离式容器?

如果您看一下docker文档

-d = false:分离模式:在后台运行容器,打印新的容器ID

如果要查看输出,通常为服务而非独立脚本创建分离模式。 如果不想看到输出,可以在独立脚本上使用分离模式。 应该以分离模式运行的服务将包括数据库,Web服务器,est,而不是一次性运行可以退出的脚本。

您的容器在后台运行,然后退出,因为脚本已结束。 由于-d选项仅打印出您将看到的所有容器ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM