阅读更多

2顶
0踩

行业应用

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

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

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 条 请登录后发表评论

发表评论

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

相关推荐

  • 落落 Oracle SQL优化与改写培训教程

    字典式写作手法:不讲具体语法,没有简单知识堆砌,直接以案例形式讲技巧与案例 大量优化实战方法:将主要SQL优化点一一剖析,分享大量SQL优化的实际工作经验 50余改写调优案例:覆盖大多数DBA日常工作场景,具有相当大的实用价值 技巧+案例:可以作为DBA的参考手册,也可以作为开发人员编写SQL的速查字典

  • SQL优化

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

  • 【SQL入门】最全SQL基础知识总结(理论+举例+建议)

    数字型(int,tinyint,decimal,float等)、日期和时间类型(Date,TIME等)、字符串类型(char,varchar等)。:于1992年发布,这个版本通过引入新的特性进一步扩展了SQL语言的能力,包括多表连接、子查询、视图和存储过程等,是目前获得最广泛支持的版本。:为表设置适当的表别名,不仅可以减少SQL语句的复杂度,也能尽量避免出错,让SQL语句更加的直观、易理解。:在1989年发布,这个版本引入了更多的特性,包括排序、分组和连接操作的支持。

  • 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优化】高质量SQL的建议

    查询 SQL 尽量不要使用 select *,而是 select 具体字段 反例子: select * from employee; 正例子: select id,name from employee; 理由如下: 只取需要的字段,节省资源、减少网络开销。 select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。 如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 l...

  • SQL优化这么做就对了

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

  • MySQL-SQL优化

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

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

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

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

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

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

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

  • SQL优化常用的几种方法

    一、背景 在使用JPA时常常出现业务复杂不方便使用名称解析的情况,这时可采用原生SQL来实现,SQL在请求并发数量较多时效率会影响系统的整体效率,在此记录一下sql优化的常用几种方法。 二、优化方法 1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 3、应尽量避免在 where 子句...

  • 常见sql 优化的方法

    常见sql 优化的方法,oracle sqlserver

  • 帮盖尔优化SQL-----子查询优化的经典案例

    上周五要下班的时候,盖尔发来一个SQL select tpc.policy_id, tcm.policy_code, tpf.organ_id, to_char(tpf.insert_time, 'YYYY-MM-DD') As insert_time, tpc.change_id, d.policy_code,

  • 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优化方案精解十则

    好程序员大数据培训分享SQL优化方案精解十则:一、避免进行null判断。 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,这里最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库。 备注、描述、评论之类的可以设置为 NULL,最好不要使用NULL。不要错误的认为NULL 不需要空间,如char(100) 型,在字段建立时,空间就固定了。不管是否插入值(NULL也包含在内),都是占用 100个字符的空间的,如果是varchar这样的变长字

  • sql语句优化的小技巧(①)

    在开发中,可能很多的程序员都比较关注比较大的数据库的优化技术,例如 分表分库、读写分离、 缓存 等等。从而忽略了一些 可以从sql语句中进行优化的小技巧,现在我整理了几个常用到的小技巧,希望对大家能有点用: 1、union all 的效率 比 union 的效率要高。2、count(*) 速度要比count(1)稍快,但是 如果聚合函数中的字段为索引字段,那速度是最快的。3、设置索引 对于经常被设

  • 常见的SQL优化

    SQL优化: 个人理解:主要是对查询的优化。对于sql的优化主要就是下面几个方面的优化, 1.避免全表扫描 2.避免索引失效 3.避免排序,不能避免,尽量选择索引排序 4.避免查询不必要的字段 5.避免临时表的创建,删除 6.... 一.插入数据 1.导入大批量数据 这个需要先关闭索引,插入数据后再打开索引。 1.1.针对MyISAM引擎可以通过以下方式提高导入数据...

  • 总结之1-百万级数据库优化方案+案例分析

    项目背景 有三张百万级数据表 知识点表(ex_subject_point)9,316条数据 试题表(ex_question_junior)2,159,519条数据 有45个字段 知识点试题关系表(ex_question_r_knowledge)3,156,155条数据 测试数据库为:mysql (5.7) 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 or...

Global site tag (gtag.js) - Google Analytics