Docker使用中可能遇到的问题

Docker并不是一个新的技术,容器化也不是,早在2006年就陆续出现了LXC, OpenVZ,Jail等容器虚拟化技术,但是为什么Docker却能异军突起呢?Docker的核心是基于 Linux的CGroup、Namespace和LayeredFS技术,通过资源的控制、隔离和对镜像的分层处理,是Docker容器能够将应用程序和运行环境打包到一起,这样就可以Build, Ship And Run anywhere。与其说是Docker火,不如说是其天生的轻量级属性,正好迎合了云计算大行其道的今天。因此,笔者认为Docker改变整个云计算和互联网的格局是迟早的事,但是Docker在使用中,特别是在国内,又有什么需要注意的问题呢?

1. 编译

Docker虽然说是一个开源的项目,但是如果你要在国内成功编译它是一件非常困难的事情。Docker是用Go来开发的,Go被誉为互联网时代的C语言,由google主导开发,它的开发者包括了 Chrome V8引擎和Unix的开发者,因此它天生就是易用且简介的。它具有良好的包管理、简介的语法和非常好的灵活性。但是,在国内很多package,你是不一定能够取下来的,这样就导致编译过程很难进行。

2. 安装

如果你在国外,没有GFW的限制,拥有非常好的网速,你使用Docker就像是在开一辆跑车。但如果你在国内,就好比是开了一辆没油的跑车。我曾经很多次遇到了安装失败的问题,而且安装速度非常缓慢。同时,如果你要在全封闭的内网安装Docker就更麻烦,你需要将所有的安装包完整迁移到内网,这个工作量是非常大的。下面就是一个官方安装失败的例子:

root@ghostcloud:~# curl -fsSL https://get.docker.com/ | sh 
 
apparmor is enabled in the kernel and apparmor utils were already installed 
 
+ sh -c apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 
 
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.cr8hxY45Ve --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 
 
gpg: requesting key 2C52609D from hkp server p80.pool.sks-keyservers.net 
 
?: p80.pool.sks-keyservers.net: Host not found 
 
gpgkeys: HTTP fetch error 7: couldn't connect: Success 
 
gpg: no valid OpenPGP data found. 
 
gpg: Total number processed: 0 

3. 镜像pull非常慢

Docker为什么火,有一个重要的原因就是它开创性的分层镜像机制,你的环境和应用程序都会被打包到镜像中。但是,一个比较大的问题是,Docker所有的镜像都依赖于基础镜像,而这些基础镜像都在国外的docker hub上,当你兴致勃勃准备用docker大干一场时,pull的漫长等待一定会让你很抓狂,而最后的超时失败,更会让你有说脏话的冲动。

4. 镜像存储

Dockerhub在国外这个问题还好,但是默认的dockerhub所有镜像都是公开的,就是说你的镜像别人都能够下载。这个策略跟github是一样的,如果你要用免费的,那么你就得开源。否则,给钱买私有仓库吧。Docker的私有仓库价格是非常贵的,而且速度还很慢。你不可能需要共享镜像时,都push到国外,再pull回来吧。当然有的人可能要说,我可以搭建私有仓库。不过私有仓库仅时候企业内部私有网络使用,而且没有基础镜像,如果你有跨区域的使用,是非常难处理的。

5. 云端的部署问题

至少在我写这篇文章的时候,不是每一家公有云厂商的基础镜像都能顺利的安装docker,docker是轻量级的虚拟化技术不假,但它仍然不能在短期内替代VM。如果你要在VM上使用docker,需要对网络、存储等做一些特殊的处理。

6. 容器和主机的管理

Docker是轻量级的不假,但是随着轻量以后,势必会出现大量的容器和主机。本身使用docker的出发点是降低运维成本,提升效率,但是管理上的成本相反却会上升。主机的监控、容器的监控、容器和容器之间的联系等等,都需要专业的公司来处理。很多人可能会想,我可以使用kubernetes,mesos等开源框架,不过我想给你敲一个警钟,如果你没有10人以上的运维团队,最好不要去碰这类框架。这类框架设计之初就是管理成千上万台的主机,如果你没有这么大的量,一定会让你日后的维护非常的酸爽。

7. 容器的性能

容器有性能损失吗?如果你要将系统搬迁到docker上,你是否会有担忧?CPU、内存、磁盘IO的性能到底如何?如何进行优化?这些都是需要大量测试和优化的。

8. 容器的安全

容器到底安全吗?容器是操作系统级的虚拟化技术,多个容器实际是共享了操作系统内核。容器的安全一直在不断的向前发展,但是你必须要了解容器可能受攻击的面有多大,如何来进行避免。

9. 网络问题

容器本身支持多达5种网络模式,默认的方式只是非常基础的简单应用,对于您的实际环境,则需要专门的特殊处理,才能是网络性能达到最优化。

10. 容器型运维人员短缺

目前国内对linux比较熟悉的运维都是供不应求,而容器是建立在linux之上的,诚然容器可以提升开发、测试和运维的效率,但是这是建立在你有懂docker的运维的人员。据我所知,目前国内对docker很熟悉的运维人员非常少,docker的一手资料基本都是英文的,对英文非常熟悉的运维人员并不多。

对于上面的问题,其中的每一条都可能延伸出来很长的篇幅,这些都是笔者在实际开发和应用中遇到过的问题, Docker的发展速度飞航快,到现在已经3年了,现在它已经从一个测试-发布的工具,逐步转变成为基础架构的组成部分,正式迈向产品化环境,但实际使用中依然有很多需要注意的地方。2016年3月31日,精灵云(www.ghostcloud.cn) Docker混合云PaaS/CaaS正式上线,欢迎注册使用。

时间: 2024-10-31 17:19:21

Docker使用中可能遇到的问题的相关文章

阿里云部署Docker(6)----解决删除<none>镜像问题

转载请注明来源,本博客原创作者为:http://blog.csdn.net/minimicall?viewmode=contents 在Docker使用中,经常会碰到删除镜像不成功,反而让镜像变成了<none > <none>即,没名字,没Tag的镜像. root@iZ28ikebrg6Z:/var/run# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> de

Docker技术入门与实战(第2版).

容器技术系列 Docker技术入门与实战 第2版 杨保华 戴王剑 曹亚仑 编著 图书在版编目(CIP)数据 Docker技术入门与实战 / 杨保华,戴王剑,曹亚仑编著. -2版. -北京:机械工业出版社,2017.1 (容器技术系列) ISBN 978-7-111-55582-7 I. D- II. ①杨- ②戴- ③曹- III. Linux操作系统-程序设计 IV. TP316.85 中国版本图书馆CIP数据核字(2016)第308604号 本书从Docker基本原理开始,深入浅出地讲解Do

Docker技术入门与实战(第2版)3.8 本章小结

3.8 本章小结 本章具体介绍了围绕Docker镜像的一系列重要命令操作,包括获取.查看.搜索.删除.创建.存出和载入.上传等. 镜像是使用Docker的前提,也是最基本的资源.所以,在平时的Docker使用中,要注意积累自己定制的镜像文件,并将自己创建的高质量镜像分享到社区中. 在后续章节,笔者将介绍更多对镜像进行操作的场景.

《Docker技术入门与实战》——3.8 本章小结

3.8 本章小结 本章具体介绍了围绕Docker镜像的一系列重要命令操作,包括获取.查看.搜索.删除.创建等.读者可能已经发现,镜像是使用Docker的前提,也是最重要的资源.所以,在平时的Docker使用中,推荐大家注意积累定制的镜像文件,并将自己创建的高质量镜像分享到社区中.在后续章节,笔者将会介绍更多对镜像进行操作的场景.

在Mac OS上使用mod

  一.安装mod_wsgi 3.4: ? 1 2 3 ./configure --with-apxs=/Users/levin/dev/apache2.2.27/bin/apxs --with-python=/usr/bin/python make make install 编辑httpd.conf使Apache导入模块mod_wsgi.so以及引入vhost配置文件: ? 1 2 LoadModule wsgi_module modules/mod_wsgi.so Include conf/

Twitter自主研发&quot;客户&quot;数据库Manhattan

[编者按]构建一个完全面向服务的系统一直是Twitter追求的目标,而从 之前的文章中,我们分享过Twitter从容应对14.3万TPS峰值的整个系统概览,不过各个服务组件的细节却并未涉及.有幸的是,该公司近日披露了其自主研发的数据库系统Manhattan,在提供高可靠.高可用等特性的同时,Twitter仍然灌输了其面向服务的特性. 以下为译文: 随着Twitter成长为全球化的用户交流.表达平台,它的存储需求也在一直增大.在过去的几年中,我们发现我们急需一个可以进行每秒数百万次查询,在实时环境

Manhattan,Twitter规模的实时、多租户分布式数据库

构建一个完全面向服务的系统一直是Twitter追求的目标,而从 之前的文章中,我们分享过Twitter从容应对14.3万TPS峰值的整个系统概览,不过各个服务组件的细节却并未涉及.有幸的是,该公司近日披露了其自主研发的数据库系统Manhattan,在提供高可靠.高可用等特性的同时,Twitter仍然灌输了其面向服务的特性. 以下为译文: 随着Twitter成长为全球化的用户交流.表达平台,它的存储需求也在一直增大.在过去的几年中,我们发现我们急需一个可以进行每秒数百万次查询,在实时环境中延迟低的

“卖肾”和“土豪”,被赋予了新的意义

拜iPhone所赐,有两个原本冷门的词汇,"卖肾"和"土豪",被赋予了新的意义,并成为当之无愧的热年度词儿.而它们与iPhone最大也是唯一的关联,就是被用来形容后者的昂贵.如今随着iPhone6的到来,估计又会有无数土豪成为众人中的焦点,也会有无数人调侃或被调侃:你的肾还够用吗?iPhone6如约到来,钱包鸭梨很大论价格,iPhone必然是手机中的奢侈品,而奢侈品的价值,并不在于产品的功能性本身,而是被赋予了更多品牌.理念.内涵层面的意义.因此,苹果的文化其实也是

对企业内网安全的规划方向的安全分析经典版

以下的文章主要向大家描述的是对浅谈企业内网安全的规划方向的安全分析,现在计算机与网络安全问题不断加重,安全人员只有再三谨慎,做好基本的安全流程,吸收和应用 各类产品最新的解决方案后.欲善其事,先利其器计算机和网络的安全问题不断加重,安全人员唯有谨慎再三,做好基本的安全流程,吸收和应用各类产品最新的解决方案后.及时了解工作环境和终端需求,定制基于本地和网络的防护软体并制定适合的策略;调配系统和用户的权限问题;备份和加密重要的数据资料;建立健全的硬件,系统,网络的监控措施.同时要掌握文件体系中的RO