阅读更多

2顶
0踩

行业应用

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

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

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的速查字典

  • 15个SQL优化的技巧

    sql优化技巧

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

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

  • SQL语言入门(非常详细)零基础入门到精通,收藏这篇足够了

    要精通 SQL 语言,需要不断地实践和学习。可以通过在线课程、书籍、练习网站等多种资源进行深入学习,并在实际项目中积累经验,逐渐掌握 SQL 的高级特性和优化技巧,从而能够熟练地使用 SQL 来管理和操作数据库。SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系型数据库的标准语言。

  • SQL优化

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

  • 20种sql语句优化方案

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

  • 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语句执行效率的方法

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

  • SQL优化的26个小技巧,收藏好~~

    如果没有特殊的理由, 一般都建议将字段定义为NOT NULL。为什么呢?NOT NULL 可以防止出现空指针问题。其次,NULL值存储也需要额外的空间的,它也会导致比较运算更为复杂,使优化器难以优化SQL。NULL值有可能会导致索引失效。

  • oracle sql优化培训

       作为一个开发人员,我们也许不会接触到复杂sql的操作,按照Tom大叔的话,我们大部分开发人员把数据库当做了一个黑盒子,而且神秘不可控制。如果老是这样的想的话,恐怕迟早有一天我们会被社会淘汰。如今,精明的DBA都在向应用靠拢了,我们这些应用程序员当然也需要加强在数据库的知识,兴许有一天你会很牛,但说起数据库你一问三不知,会被人笑道的。    今天参加了公司组织的一个简短的oracle的培训,...

  • 从今天开始深入学习 SQL 优化

    关键字大写,保持统一。 保持良好的换行,便于理清楚逻辑。 and,or,逗号等放在行首,这样的好处是增加删除条件时比较方便,否则删除最后一个条件时还要去上一行末删除关联词。 不用保证符号对齐, where条件field对齐即可。 尽量查询的field前加上表的简称,提高代码可

  • 数据库SQL性能优化总结

    一、SQL语句优化 1、对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引; 2、在 where 子句中对字段须避免以下操作,否则将导致引擎放弃使用索引而进行全表扫描; 进行 null 值判断; 使用 != 或 <> 操作符; 使用 or 来连接条件,如果一个字段有索引,一个字段没有索引; in 和 not in 也要慎用; 使用模...

  • 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 该排序性能好些。

  • SQL的优化和技巧

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

  • 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优化常用的几种方法

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

  • Msql优化那些事儿

    1. 为查询缓存优化你的查询? •大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例

Global site tag (gtag.js) - Google Analytics