base 镜像(fat container 类似 PouchContainer):
- 使用 s6 进程管理工具。使用 skaware 容器化静态编译 s6
- 使用 sshd(安全风险)
- rootless 运行(javaagent 写权限/nfs 写权限)
java 镜像:
- 支持 jvm-sandbox 插件,通过环境变量启动
- 不推荐使用 alpine linux 作为基础镜像,musl libc 有许多问题存在。
- 使用 static binaries。例如:
ffmpeg
- APT 安装添加
--no-install-recommends
减少镜像大小 - 使用 rootless 用户运行,需要在镜像中配置 uid,以及 deployment 配置对应的 uid。
使用rootfs
目录命名- 使用 action matrix 编译 s6(multi job)
dive 131f24102f9ebc5fb2e4b024f97 --source=docker
s6-supervise
会保持 run
长期运行(自动重启)。
- jprjr s6 ubuntu
- jprjr s6 debian
- jprjr Docker and S6
- Phusion Docker image
- https://www.brendangregg.com/blog/2016-07-13/llnode-nodejs-memory-leak-analysis.html
- https://developer.ibm.com/articles/explore-nodejs-core-dumps-using-the-llnode-plugin-for-lldb/
- 阿里巴巴 如何打造百万级规模的容器技术
- docker-alpine-s6
- bitnami container
- How to run s6-svscan as process 1
- kfei: 使用 s6 作為多服務容器的啟動管理程序