⼀。运维⾓度: (⼀)镜像:
1. 避免依赖过深。不要在基础镜像上加太多产⽣其他的镜像,我觉得这块最多是三四层。
⼀层是base景像再往上是⼯具、中间件这样的,再往上⼀层就是你⾃⼰的程序,再多就⽐较乱了。 Base image是CentOS 7
2. 镜像越⼩越好,消耗的资源越少越好 3. 根据应⽤的差异化,建多个基础镜像
4. 镜像构建这块,⼀定要从Dockerfile⽣成,这样做最⼤的好处是可以通过Dockerfile“阅读”镜像。
在后续的协作、升级维护等⽅⾯会带来巨⼤的便利。如果不从Dockerfile⽣成,以后更新、回滚是很⿇烦的。 我⽤Dockerfile⽣成的时候,其他的⼈可以通过Dockerfile或者镜像就可以阅读这个镜像是怎么来的。 哪个镜像是base镜像,中间加了哪些软件,运⾏什么东西
5.镜像管理这块,虽然我们应⽤的是原⽣的,但是这⼏项只要跟数据有关系的都要考虑。
单点问题,暂时我们⽤的是⼀台机器,不是很安全,对应的解决⽅案可以考虑DRBD、分布式存储以及云存储。 性能问题,主要是下载加速,⽬前可⽤的解决⽅案是通过HTTP反向代理缓存来加速Layer的下载。 权限问题,可以⽤Nginx LUA提供⼀个简单快速的实现⽅案 (⼆)⽇志管理:
⽇志管理的话,如果把⽇志放在容器⾥⾯,由于容器是⽆状态的,所以存储在容器内的⽇志会随着容器的销毁⽽消失。
你要把⽇志实时保存下来,或者把⽇志放在宿主机,但是放在宿主机的话,有点违反Docker化不依赖宿主机的任何环境的要求。 建议放⼀些⽇志收集⼯具如Logstash或者Flume等。 (三)RC配置
1. 多实例运⾏,我们的机器可够跑多个实例的,启动的时候每个实例的占的内存和CPU都要考虑⼀下 (四)内核参数的调整: 1. ulimit 2. dns 3. ....⼆。开发⾓度: (⼀)
1. 程序放在容器⾥的话,这个程序⾄少应该是⽆状态的,不能依赖于宿主机的⼀切环境,如⽬录、IP 2. 以前如果⽤正常开发的话,root是不让⽤的,⽤Docker就可以
因篇幅问题不能全部显示,请点此查看更多更全内容