linux s6 docker 集成参考
基于s6-overlay 工具
环境准备
- Dockerfile
FROM ubuntu
ARG S6_OVERLAY_VERSION=3.0.0.2-2
RUN apt-get update && apt-get install -y nginx xz-utils
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
CMD ["/usr/sbin/nginx"]
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch-${S6_OVERLAY_VERSION}.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch-${S6_OVERLAY_VERSION}.tar.xz
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64-${S6_OVERLAY_VERSION}.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64-${S6_OVERLAY_VERSION}.tar.xz
ENTRYPOINT ["/init"]
- 构建&&使用
docker build -t dalongrong/s6-demoapp .
docker run -d -p 80:80 alongrong/s6-demoapp
s6 进程效果
- 进入容器
docker exec -it <containerId> sh
- 进程效果
s6-overlay 支持的特性
- 简单init 进程,需要服务进行初始化以及释放定义(比如任务,以及系统运行初始化)
- 接管1号进程,规避僵尸进程的问题(容器僵尸进程很常见)
- 多进程单容器(维护上更加方便)
- 可以复用现有的基础镜像(centos,alpine,ubuntu)
- 做为tar 文件提供简单
- 开箱即用的日志轮转(基于了s6-log)
说明
s6-overlay 的功能还是很强大的,使用上也比较简单,值得使用,使用它可以解决不少容器运行的一些问题
参考资料
http://skarnet.org/software/s6-linux-init/
https://github.com/just-containers/s6-overlay