Docker 基础学习(一)
Docker官网:https://docker.com/
中文翻译非常好的学习地址:http://dockerpool.com/static/books/docker_practice/index.html
学习一项新技术之前,我们应该只要是什么?为什么使用?怎么使用?
对于Docker,我们依然按此步骤来学习:
1、什么是Docker?
2、为什么使用Docker?
3、怎么使用Docker?
什么是Docker?(引自:http://dockerpool.com/static/books/docker_practice/introduction/what.html)
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
为什么要用Docker?(引自:http://dockerpool.com/static/books/docker_practice/introduction/why.html)
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
具体说来,Docker 在如下几个方面具有较大的优势。
更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
对比传统虚拟机总结
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
Docker怎么使用?这个问题是一个非常大的问题,关系着我们接下来的一周两周或者一个月都要学习的内容。所以我们要一步一步的走...
Docker安装:
Docker支持centos6及以后的版本,作者以Centos6.5为例进行安装学习。其他版本可以参考https://docs.docker.com/engine/installation/centos/
官方文档上说Docker需要64位 Centos,并且内核在3.10以上。
1、检查Centos版本
[root@localhost /]# uname -r
2.6.32-431.el6.x86_64
版本低于3.10,需要进行升级内核。此处说明下,小编没有升级也可以安装Docker,功能也可以使用...
不过还是要根据官网文档来升级内核吧...
升级前系统镜像:CentOS 6.5 64位
内核版本:2.6.32-431.el6.x86_64
升级内核步骤:
1、rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org (导入public key)
2、rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm (安装elrepo到内核为2.6.32的CentOS中)
3、yum --enablerepo=elrepo-kernel install kernel-lt -y (安装kernel-lt(long term support)长期支持版本)
注:因为该源在国外,直接使用yum方式使用elrepo源会比较慢,所以建议使用rpm的方式安装kernel-lt,访问
http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
下载对应的rpm包,使用rpm方式安装:
rpm -ivh kernel-lt-3.10.93-1.el6.elrepo.x86_64.rpm
另外关于kernel-lt的介绍,可直接访问http://elrepo.org/tiki/kernel-lt
4、编辑grub.conf文件,修改Grub引导顺序
vim /etc/grub.conf
确认安装的新内核的位置,将default的值调整为新内核的顺序,如本次升级案例中新装的内核位置为0,所以将default修改为0,保存退出,reboot重启服务器。
5、重启系统后检查内核
[root@localhost /]# uname -r
3.10.93-1.el6.elrepo.x86_64
6、内核升级完成后进行测试
升级完成后可以安装docker进行使用观察:
yum install -y docker-io
service docker start
docker pull centos:centos 7
docker run -t -i centos:centos 7 /bin/bash
未完待续...