Docker最佳实践

Docker最佳实践

这里主要针对制作Docker镜像,汇总常见的正确使用方式:

制作镜像

使用继承镜像

如果要制作包含Tomcat和Java运行环境的镜像, 建议先基于CentOS制作Java镜像,接着基于它做Tomcat镜像。
centos7-java8 > centos7-java8-tomcat8

在一个容器最好只运行一个进程

制作合适层数的镜像

避免只包含一层,也避免太多层。常用的方式例如:

  • 基于操作系统的定制基础镜像
  • 新用户创建准备
  • 安装运行时
  • 配置
  • 应用层

定义.dockerignore

使用WORKDIR

注意顺序,依照构建过程(不变的在前)

缩减镜像尺寸

镜像的选择:
Ubuntu > openjdk:8-alpine > tomcat:8.5-alpine

常用清除命令

# Alpine
apk add --no-cache curl
# CentOS
yum clean all
# Ubuntu
rm -rf /var/lib/apt/lists/*

使用Health Check

HEALTHCHECK CMD curl --fail http://localhost  || exit 1
--interval=10s
--timeout=10s
--start-period=30s

# 检查状态
docker ps response

Java应用性能优化

JVM

应该指定 -Xmx
默认使用宿主机的25%或1G(取较小值)

使用docker资源限制

–memory
–memory-reservation
–cpus

如果CPU被限制,需要同时设置 -XX:ParallelGCThreads

日志处理

不建议写到容器的RW层,应该发送到数据卷(NAS/SAN)或使用 Docker Log Drivers.

问题诊断

JVM命令:
GC Stats: jstat –gcutil
Heap Dump/直方图: jmap

Docker命令:
docker stats
ctop

一些镜像资源

参考

发表评论

电子邮件地址不会被公开。 必填项已用*标注