Dockerfile 里使用 tini
tini 是专门给容器使用的 init 进程。
ENV TINI_VERSION v0.19.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
当这么安装 tini 时,编译镜像后,运行镜像可能会遇到这种问题:
/tini: no such file or directory
/tini: cannot execute: required file not found
这有几种可能:
- 没下载成功,检查镜像里是否存在 /tini 文件。
- 编译镜像的架构与下载的 tini 文件的架构不一致。
- tinit 在 releases 页面发布了很多版本,默认的 tini 是 x86-64 的。下载后用
file ./tini
一看便知。
- tinit 在 releases 页面发布了很多版本,默认的 tini 是 x86-64 的。下载后用
- tini 依赖 libc。
- 当你使用 alpine 作为 base image 时,默认是没有安装 libc 的。
- 解决方案:用包管理器来安装 tini。或者下载 tini-static 版本。详见 https://github.com/krallin/tini#statically-linked-version