内容用OCR文字识别软件而得,源于书籍《devops三十六计》。

Docker应用三十六计

镜像管理

第一计
自己构建基础镜像很重要,用未认证的镜像存在漏洞风险

第二计
基础镜像应该足够小,仅安装必要的依赖和工具集。

第三计
镜像太大会影响效率,要想办法瘦身和拆解。

第四计
把镜像的生成放到持续集成中, 自动触发镜像构建,提前发现异常。

第五计
代码构建和镜像构建分开进行,原子化构建过程更容易定位异常

第六计
推存使用三层镜像管理模式:基础镜像/环境镜像/业务镜像
越稳态的内容越往底层放。

第七计
创建自己的私有合库管理镜像,并做好权限控制。

第八计
每个版本认真验证完成后再推送到生产镜像库,避免生产镜像过大。

用好dockerfile

第九计
用dockerfile的方式构建镜像,建议将dockerfile放到代码库做版本管理。

第十计
dockerfile每一个指令都是一个新的镜像层,我们要尽量控制镜像的层次。

第十一计
dockerfile中的RUN指令能合并就尽量合并, 能够使镜像瘦身。

第十二计
在构建镜像时设置好 正确的时区,或映射宿主机时区文件。

容器运行

第十三计
一个容器尽可能只做一个任务, 只有一个进程。

第十四计
如果容器里有多个任务进程, 封装初始脚本来管理,或者选 择supervisor这样的工具。

第十五计
正确使用ENTRYPOINT和CMD,推荐使用exec模式来定义容器的初始化进程。

第十六计
优雅地停止容器, 停止容器时处理好SIGTERM信号,避免被直接kill。

第十七计
测试和生 产用同一个镜像,启动时通过env参数指定所使用的配置文件。

第十八计
谨慎使用 privileged特权模式启动容器。

第十九计
不要将宿主机上的敏感目录挂载到容器内。

第二十计
容器内避免运行SSH, 不要通过SSH方式进入容器,可通过exec方式进入运行中的容器。

第二十一计
数据不要存放在容器内,一旦重启就丢失了, 建议使用云存储,更便于资源调度和故障转移。

容器运维

第二十二计
管好2375端口

第二十三计
对宿主机预拉取基础镜像,能够加快发布速度。

第二十四计
定期清理宿主机上无用的镜像。

第二十五计
在生产服务器上及时清理退出的exit状态的容器。

第二十六计
尽量不要在运行的容器中做配置变更, 所有变更和发布都 是新的镜像分发过程。

第二十七计
日志不落本地,容器和应用日志实时采集入日志系统,常 用的解决方案是ELK。

容器编排

第二十八计
每一种网络模型都有其自身优势和适用的应用模型,建议 根据业务形态和基础架构,选择合适的网络模型。

第二十九计
选择Docker的专用监控工具构建容器监控,做宿主机和所 有容器的资源容量监控,合理配置资源使用量。

第三十计
不要把日志采集和监控之类的agent放到容器里,在宿主机 上单独运行日志采集和监控等容器。

第三十一计
建议使用公有容器云平台做容器编排, 管理客器服务,自 已专注业务和镜像层面的优化。

第三十二计
基于 Mesos或者K8S构建自己的容器编排服务,Mesos灵活, K8S闭环。

基本认知

第三十三计
版本选择很重要,低版本的很多坑在新版本中已经修有

第三十四计
Docker 更适合用微服务部署。

第三十五计
不要把Docker当成虚拟机用。

第三十六计
不要为了使用Docker而选择Docker, 先想想能否解决你的痛点。