Container best practices
本文对容器技术的实践做了不少总结,给出了一些最佳实践。
- multi stages: 删掉构建过程的文件
- clean up: 删掉构建过程的文件
- chaining method: 减少 image layer
- cattle v/s pet containers: kill 后启动可以自动恢复健康的容器叫 cattle,否则是 pet。一般来说,数据库这种 container 算 pet containers。
- 容器配置要注意的一些坑:
/etc/localtime
/etc/machine-id
可以 mount 进容器。 - 容器内应用启动有三种方式:直接启动应用,使用脚本包一层,或者使用 systemd 启动程序。直接启动适合非服务类应用。脚本启动适合稍微复杂一点的程序。systemd 比较适合服务类应用,缺点是会让 image 变大一些。4.5 章节给出了 Dockerfile 中的示例。
- 如果想用系统的 logging,可以用
-v /dev/log:/dev/log
把 rsyslog 挂到容器里. - 数据类容器最好配置下存储数据的上限:
--storage-opt size:60
(GB) - 给镜像写 help file。