Dokcer 灵魂三问:What?Why?How?

it2025-04-22  12

  在计算机发展的过程中,跳过计算机初期发展的尝试期,进入PC时代之后,性能完全取决于CPU主频高低或内存大小,比如IBM大型机服务器,性能完全取决于单机CPU堆砌,利用单机可以支撑庞大的应用,但造价高昂、扩展性较低、无法广泛应用。

  随着进入云计算时代,面对巨大算力的需求,单机已无法完全满足当下需求,虚拟化便成为了云计算不可或缺的一部分。

  虚拟化并非今时今日才有的技术,虚拟化可以通过硬件模拟来实现,也可以通过操作系统来实现。近年明显基于操作系统来实现虚拟化更加火爆,其可依赖于操作系统已有的特性,而Docker便是其中较为出色的一个。

  What is the Docker?

  Docker是基于Go语言的开源项目,最初是由dotCloud公司于2013年发起。Docker从开源以后,应用变的广泛起来,并逐渐形成了其生态体系。dotCloud也更名为Docker Inc,专注于Docker生态技术研发。

  Docker加入了Linux基金会,遵循Apache 2.0协议,开源代码维护在https://github.com/docker/docker上。

  目前主流的Linux操作系统都支持Docker,如Redhat RHEL 6.5 +、CentOS 6.5 +、Ubuntu 14.04 +都默认带了Docker的软件包。

  Docker的口号是一次封装,到处运行(Build,Ship and Run Any App,Anywhere),通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的’一次封装,到处运行’。应用组件可以是一个应用,数据库、操作系统或更加复杂的组合。

  Docker并不是LXC(Linux Containers,Linux容器)的替代者,Docker引擎的基础是LXC技术。LXC将Linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。Docker在LXC的基础上,进行了一系列优化,可以使得Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以简单明了地管理和使用容器。

  Why use the Docker?

  为什么要使用Docker?和LXC等虚拟化技术相比有什么优势呢?

​  首先举个例子:

  LAMP(Web应用软件组合,Linux + Apache + MySQL + PHP)通常用来一起运行动态网站或者服务器的软件组合。按照传统方式使用LAMP建立一个简单的网站,一般的做法是:

​ ​ ​ · 安装Linux系统及初始化等操作。

​ ​ ​ · 安装Apache及初始化等操作。

​ ​ ​ · 安装MySQL及初始化等操作。

​ ​ ​ · 安装PHP环境及初始化等操作。

​ ​ ​ · 部署应用程序及初始化等操作。

​ ​ 当服务进行迁移或扩展时,还需要按照上面的步骤往复操作,来完成服务的搭建。期间还可能面临由于基础环境的变化导致服务搭建失败。这些都将是工作效率大大折扣。

​ ​ 上面的情况使用Docker就比较方便,通过Docker将LAMP整体环境打包,在需要重新部署时,在新的服务器上启动打包好的容器就可以了。不仅提高了工作效率,同时避免了这一过程出现问题风险。

​​ ​ 正如Docker的Logo想表达的内容一样,Docker的灵感来源于货运的集装箱,轮船相当于服务器,集装箱相当于打包好的容器,容器内可以是应用、数据库、操作系统或更复杂的组合。容器之间相互隔离,不互相影响。像我是做Java开发的,用Java与Docker进行一下类比,将Docker运行平台类比作JVM,正是因为它适配了不用的平台,才有了’一次封装,到处运行’的优势。将容器类比作Java应用程序,运行在Docker运行平台之上。

​​ ​ Dokcer 较传统方式的优势:

​ ​ ​ · 更快速的交付和部署:

​ ​ ​ 开发、测试、实施人员可以制定一套标准环境,应用到开发、测试、部署等环节,保证环境对应用的影响降到最低。Docker可以快速创建和删除容器,更加便于进行快速迭代。

​ ​ ​ · 更高效的资源利用:

​ ​ ​ 内核级虚拟化,可以实现更高的性能,同时对资源的额外需求很低。

​​ ​ ​ · 更轻松的迁移和扩展:

​ ​ ​ Dokcer的支持很广泛,几乎在任意平台上都可以运行,无论是单机、集群或云端。

​ ​ ​ · 更简单的更新管理:

​ ​ ​ 使用Dockerfile进行容器编排来构建环境,可以大大的节省人力资源。

​ ​ Dokcer 较虚拟机的优势:

​ ​ ​ · Dokcer容器很快,启动和停止可以在秒级实现,较传统的虚拟机技术快的多。

​ ​ ​ · Dokcer容器对系统资源需求较少,较传统的虚拟机技术少的多。

​ ​ ​ · Docker通过类似Git来获取、分发和更新镜像,更加方便,利于管理。

​ ​ ​ · Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制。

​ ​ How use the Docker?

​ ​ Docker使用起来相对比较简单,下面来演示下WordPress的安装,本人这台CentOS 7已经安装Docker环境,执行的指令来安装WordPress。

​ ​ · 拉取WordPress镜像:

docker pull wordpress:latest

​ ​ · 拉取MySQL镜像:

docker pull mysql:5.6

​ ​ · 使用MySQL镜像运行容器:

docker run -d --privileged=true --name WordPressMysql -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 13306:3306 mysql:5.6

​ ​ · 使用WordPress镜像运行容器:

docker run -d --name WordPressServer -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e WORDPRESS_DB_NAME=myword -p 9080:80 --link WordPressMysql:mysql wordpress

​ ​ · 通过浏览器访问WordPress服务:

​ ​ 可以看出来,Docker的应用其实并不复杂,Docker为我们封装了底层和操作系统复杂的交互。

​ ​ 总结

​​ ​ 面对新技术的兴起,一定要保持良好的心态,某一项技术的崛起都有其时代背景以及不可代替的原因,Dokcer正是乘着云计算的春风发展起来的,随着云计算更多的应用虚拟化技术,学习好Docker是必不可少的了。

 ​ 本文仅对Docker做了简单的介绍,本系列会继续讲解Docker的用法,请大家持续关注!

 ​ 若文中存在错误和不足,欢迎指正!

本博微信公众号“超哥说码”,欢迎大家订阅,公众号正在完善中,会及时将更优质的博文推送于您!

最新回复(0)