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

标签 docker

假设这个简单的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 docs

-d=false: Detached mode: Run container in the background, print new container id



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

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

关于docker - 为什么不以分离模式执行Docker入口点脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52461047/

相关文章:

docker - 通过Cloud Compute Engine实例部署后,如何为DOCKER运行启动脚本?

docker - 如何让 Docker 容器在系统启动时自动启动?

docker - docker stats 命令和 docker rest api 内存统计信息不一致

Docker OCI 运行时创建失败

google-app-engine - gcloud 应该从哪里构建 docker 镜像

docker - "docker cp"文件夹中的所有文件到现有容器文件夹

docker - 如何使用花来监控1个以上的 worker

docker - ElementNotInteractableException : element not interactable: element has zero size appears since upgrade to chromedriver 83

maven - 如何在 Jenkins 管道中使用嵌套的 docker.image ('test_image' ).inside()

docker - 将DOCKER_OPTS传递到Daemon.json.j2