如何解决在 S6 Overlay 中使用 1 个进程终止 Docker 容器需要 > 10 秒
当我使用 S6 覆盖服务时,我的容器需要关闭,我感到很沮丧。据我所知,s6 应该作为 PID 1 运行,并且应该在您发出 docker stop
时向所有子进程(后缀)发出 SIGTERM。我确认它以 PID 1 运行,但仍然需要 10 秒才能停止。我尝试使用 Tini init 系统,它立即关闭。我在这里做错了什么?
Dockerfile
FROM ubuntu:latest
# Add S6 Overlay
ADD https://github.com/just-containers/s6-overlay/releases/download/v2.2.0.1/s6-overlay-amd64-installer /tmp/
RUN chmod +x /tmp/s6-overlay-amd64-installer && /tmp/s6-overlay-amd64-installer /
# Add S6 Socklog
ADD https://github.com/just-containers/socklog-overlay/releases/download/v3.1.1-1/socklog-overlay-amd64.tar.gz /tmp/
RUN tar xzf /tmp/socklog-overlay-amd64.tar.gz -C /
ARG TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
RUN ["/bin/bash","-c","debconf-set-selections <<< \"postfix postfix/mailname string test.com\""] && \
["/bin/bash","debconf-set-selections <<< \"postfix postfix/main_mailer_type string 'Internet Site'\""]
RUN apt update && \
apt upgrade -y && \
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
postfix && \
apt -y autoremove && \
apt -y clean autoclean && \
rm -drf /var/lib/apt/lists/* /tmp/* /var/tmp /var/cache
ENTRYPOINT ["/init"]
CMD [ "postfix","start-fg" ]
构建镜像:docker build -t test .
运行图像:docker run --name test --rm -d test
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。