阅读更多

2顶
0踩

行业应用

转载新闻 使用Docker容器应该避免的10个事情

2016-03-03 11:11 by 副主编 mengyidan1988 评论(0) 有6425人浏览
当你最后投入容器的怀抱,发现它能解决很多问题,而且还具有众多的优点:

1.第一:它是不可变的 – 操作系统,库版本,配置,文件夹和应用都是一样的。您可以使用通过相同QA测试的镜像,使产品具有相同的表现。
2.第二:它是轻量级的 – 容器的内存占用非常小。不需要几百几千MB,它只要对主进程分配内存再加上几十MB。
3.第三:它很快速 – 启动一个容器与启动一个单进程一样快。不需要几分钟,您可以在几秒钟内启动一个全新的容器。
但是,许多用户依然像对待典型的虚拟机那样对待容器。但是他们都忘记了除了与虚拟机相似的部分,容器还有一个很大的优点:它是一次性的。

容器的 准则 :

“容器是临时的”

这个特性“本身”促使用户改变他们关于使用和管理容器的习惯;我将会向您解释在容器中不应该做这些事,以确保最大地发挥容器的作用。

1) 不要在容器中存储数据 –  容器可能被停止,销毁,或替换。一个运行在容器中的程序版本1.0,应该很容易被1.1的版本替换且不影响或损失数据。有鉴于此,如果你需要存储数据,请存在卷中,并且注意如果两个容器在同一个卷上写数据会导致崩溃。确保你的应用被设计成在共享数据存储上写入。

2) 不要将你的应用发布两份 –  一些人将容器视为虚拟机。他们中的大多数倾向于认为他们应该在现有的运行容器里发布自己的应用。在开发阶段这样是对的,此时你需要不断地部署与调试;但对于质量保证与生产中的一个连续部署的管道,你的应用本该成为镜像的一部分。记住:容器应该保持不变。

3) 不要创建超大镜像 – 一个超大镜像只会难以分发。确保你仅有运行你应用/进程的必需的文件和库。不要安装不必要的包或在创建中运行更新(yum更新)。

4) 不要使用单层镜像 – 要对分层文件系统有更合理的使用,始终为你的操作系统创建你自己的基础镜像层,另外一层为安全和用户定义,一层为库的安装,一层为配置,最后一层为应用。这将易于重建和管理一个镜像,也易于分发。

5) 不要为运行中的容器创建镜像 – 换言之,不要使用“docker commit”命令来创建镜像。这种创建镜像的方法是不可重现的也不能版本化,应该彻底避免。始终使用Dockerfile或任何其他的可完全重现的S2I(源至镜像)方法。

6) 不要只使用“最新”标签 – 最新标签就像Maven用户的“快照”。标签是被鼓励使用的,尤其是当你有一个分层的文件系统。你总不希望当你2个月之后创建镜像时,惊讶地发现你的应用无法运行,因为最顶的分层被非向后兼容的新版本替换,或者创建缓存中有一个错误的“最新”版本。在生产中部署容器时应避免使用最新。

7) 不要在单一容器中运行超过一个进程 – 容器能完美地运行单个进程(http守护进程,应用服务器,数据库),但是如果你不止有一个进程,管理、获取日志、独立更新都会遇到麻烦。

8) 不要在镜像中存储凭据。使用环境变量 –不要将镜像中的任何用户名/密码写死。使用环境变量来从容器外部获取此信息。有一个不错的例子是postgres镜像。

9) 使用非root用户运行进程 – “docker容器默认以root运行。(…)随着docker的成熟,更多的安全默认选项变得可用。现如今,请求root对于其他人是危险的,可能无法在所有环境中可用。你的镜像应该使用USER指令来指令容器的一个非root用户来运行。”(来自 Docker镜像作者指南)

10) 不要依赖IP地址 – 每个容器都有自己的内部IP地址,如果你启动并停止它地址可能会变化。如果你的应用或微服务需要与其他容器通讯,使用任何命名与(或者)环境变量来从一个容器传递合适信息到另一个。

来自:开源中国
  • 大小: 32.8 KB
  • 大小: 2.2 KB
来自: oschina
2
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • SQL优化实例:从运行30分钟到运行只要30秒

    SQL优化实例:从运行30分钟到运行只要30秒

  • Sql优化篇-干货总结大全

    在Innodb中,表存储主要依赖两个文件,分别是,frm文件和.ibd文件。.frm文件用于存储表结构定义信息,而.ibd文件则用于存储表数据。分区之后,表面看其实还是一张表,但是它数据存储的位置就分开来了。表的分区意味着将表的数据存储在不同的.ibd文件中,而不是像普通的表一样将所有数据存储在一个.ibd和一个.frm文件中。每个分区对应一个.ibd和一个.frm文件,这些文件可以分布在不同的磁盘上,从而实现数据的分散存储,提高了I/O并发性能。

  • sql优化的15个小技巧(必知五颗星),面试说出七八个就有了

    目录 前言 1 避免使用select * 2 用union all代替union 3 小表驱动大表 4 批量操作 5 多用limit 6 in中值太多 7 增量查询 8 高效的分页 9 用连接查询代替子查询 10 join的表不宜过多 11 join时要注意 12 控制索引的数量 13 选择合理的字段类型 14 提升group by的效率 15 索引优化 前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。 如果某天你负责的某

  • SQL优化大全:详细总结30个超级实用的SQL优化技巧

    在数据库管理和应用开发中,SQL查询的性能优化至关重要。高效的SQL查询不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文详细总结了30个实用的SQL优化技巧,并附带示例代码,帮助各位大大构建高效、稳定的数据库应用。

  • SQL优化

    如果需要使用函数,请确保使用的函数可以使用索引,并且尽可能使用简单的函数。如果需要使用 OR 运算符,请确保使用的条件可以使用索引,并尽可能使用简单的条件。尽量避免使用通配符:使用LIKE语句进行模糊查询时,尽量避免使用通配符,特别是在LIKE语句中使用'%xxx%'这种模糊查询,因为它会导致全表扫描,降低查询效率。例如,如果使用函数对列进行操作,则优化器无法使用该列的索引。尽量避免在搜索中使用通配符,特别是在LIKE语句中使用'%xxx%'这样的模糊查询,因为这种查询会导致全表扫描,降低查询效率。

  • 20种sql语句优化方案

    大家写sql语句中,是不是常有死锁、超时等问题出现,那就说明你的索引、查询语句规范并不完美。以下是小主整列20种sql语句优化方案,可以让你的sql语句,查询删除更加快速。当然看起来更加容易理解!

  • 史上最全SQL基础知识总结(理论+举例)

    SQL基础知识一、SQL 概述1、什么是 SQL2、语法要求二、SQL 分类三、DDL(Data Definition Language):数据定义语言基本操作1.操作数据库2.数据类型3.操作表四、DML(Data Manipulation Language):数据操作语言1.插入数据2.修改数据3.删除数据五、DCL(Data Control Language):数据控制语言1.创建用户2.给用户授权3.撤销授权4.查看用户权限5.删除用户6.修改用户密码(以root身份)六、DQL(Data Quer

  • SQL性能优化详解,值得收藏

    hello,大家好,我是张张,「架构精进之路」公号作者。很多朋友经常会遇到如下情况:在做数据统计分析时,分析两分钟,跑数两小时......Web开发时候,通常的性能瓶颈,主要出现在数据查询时候.......在使用SQL过程中不仅要关注数据结果,同样要注意SQL语句的执行效率。本文涉及三大部分:1、SQL介绍2、SQL优化方法3、SQL优化实例1、MySQL的基本架构1)MySQL的基础架构图左边...

  • SQL优化这么做就对了

    作者 |狼爷来源 |https://www.cnblogs.com/powercto/p/14410128.html前言在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现...

  • 常用优化sql语句执行效率的方法

    项目中优化sql语句执行效率的方法: 1)尽量选择较小的列 2)将where中用的比较频繁的字段建立索引 3)select子句中避免使用‘*’ 4)避免在索引列上使用计算、not in 和 5)当只需要一行数据的时候使用limit 1 6)保证单表数据不超过200W,适时分割表。 针对查询较慢的语句,可以使用explain 来分析该语句具体的执行情况。

  • 巧用这19条MySQL优化,效率至少提高3倍

    本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 1、EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。 下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。如果没有选择索引,...

  • SQL优化方法及实例

    很多朋友在做数据分析时,分析两分钟,跑数两小时? 在使用SQL过程中不仅要关注数据结果,同样要注意SQL语句的执行效率。 本文涉及三部分,篇幅较长,建议收藏后翻看: SQL介绍 SQL优化方法 SQL优化实例 1、MySQL的基本架构 1)MySQL的基础架构图 左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成

  • MySQL — SQL 优化

    上面案例能够正常使用索引排序的情况创建索引、联合索引的时候不指定升序排列还是降序排列,默认就是升序排列一个升序,一个降序会出现filesort现象,但是也可以优化,如下所示总结根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则。尽量使用覆盖索引。多字段排序, 一个升序一个降序,此时需要注意联合索引在创建时的规则(ASC/DESC)。如果不可避免的出现filesort,大数据量排序时,可以适当增大排序缓冲区大小sort_buffer_size(默认256k)。

  • 排序sql优化

    实际上只是查询出符合deptid= 1 and position = '经理' 条件的记录并按createtime降序排序,但写成ORDER BY createtime DESC 性能较差。该排序按照记录创建时间createtime 排序性能差些,如果设置了Mysql自增主键,可以优化为:ORDER BY id DESC 该排序性能好些。如果设置了Mysql自增主键,可以优化为:ORDER BY id DESC 该排序性能好些。

  • MySQL-SQL优化

    前言 在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。 SQL优化一般步骤 1、通过慢查日志等定位那些执行效率较低的SQL语句 2、explain 分析SQL的执行计划 需要重点关注type、rows、filtered、extra。 type由上至下,效率越来越高 ALL 全表扫描 index 索引全扫描 range 索引范围扫描,常用语&lt.

  • MySQL-SQL优化10大最经典案例详解

    在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。...

  • SQL优化三板斧:精简之道、驱动为王、集合为本

    黄浩 2016-11-16 10:24:08   作者介绍 黄浩,现任职于中国惠普,从业十年,始终专注于SQL。在华为做项目的两年多,做过大大小小的SQL多达1500个。闲暇之余,喜欢将部分案例写成博客发表在华为内部数据库官方社区,反响强烈,已连续四个月蝉联该社区最佳博主。目前已开设专栏“优哉悠斋”,成为首个受邀社区“专家访谈”的外协人员。   公元2016年

  • sql优化的几种方法

    在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where ...

  • SQL的优化和技巧

    1----加载每个JDBC模块都是通过Class.forName()来加载Drvier驱动,获取连接从而进行数据库操作.通过以下方法加载驱动类:通过以下方法建立连接:创建执行SQL的语句:数据库操作模板代码:-----创建----查询:-----更新----删除SQL注入问题修改statement为PrepareStatement():数据库对应基本数据类型:事务属性:事务:将多个数据库操作归类为...

Global site tag (gtag.js) - Google Analytics