Docker技术快速精通指南

 

嘉宾介绍html

韦玮,重庆韬翔网络科技有限公司董事长兼CEO,国内知名出版社特邀IT做家,极客学院金牌布道师,CSDN特邀IT专家,51CTO学院IT专家讲师。《知道日报》特约做者,国家工信部高级网络营销师,蜻蜓FM独家签约主播,国家专利发明人,多年IT从业经验。docker

直播实录

拒绝套路!Docker技术快速精通指南数据库

各位朋友你们好,本期咱们分享的主题是Docker技术快速精通指南,也是第一期Docker的分享,但愿在本期分享中可以让各位朋友快速了解Docker技术与传统的虚拟化有何具体区别,并让各位朋友掌握Docker的一些基础的实战,包括镜像的管理、容器的管理、仓库的管理等,同时,让你们了解下一个云计算的热点,并为你们制定Docker专家养成的最佳路径。ubuntu

具体来讲,包括如下几个部分:centos

一、Docker与传统虚拟化究竟有何不一样?安全

二、下一个云计算的热点bash

三、如何在短时间内掌握Docker技术?网络

四、经过实战掌握Docker镜像、容器、仓库的管理架构

五、Docker专家养成最佳路径运维

好,那么接下来咱们立刻进入第一部份内容的分享:Docker与传统虚拟化究竟有何不一样? Docker的本质实际上也是一种虚拟化技术。虚拟化技术目前大体分为两种:虚拟机技术、容器技术。显然,Docker属于后者,即容器级虚拟化技术。

那么,容器级虚拟化技术与传统的虚拟机技术到底有什么区别呢? 咱们先从镜像的角度来看一下。

咱们知道,传统的镜像,好比一个很普通的CentOS的镜像的大小相对来讲会比较大,大概在几个G左右,其实,这个镜像里面包含两部分的内容: 1)Linux内核。 2)对应操做系统发行版等,好比,CentOS系统发行版等,这一部分是不包含Linux内核的,这一部分所包含的信息主要是一些驱动、管理软件等。

而在Docker中,会将这两部分的信息明显地分开,在镜像中,不会包含Linux内核,只包含对应操做系统发行版。在Docker中,Linux内核是共享的。 因此,咱们会发现,Docker的镜像相对来讲会很是小,普通的一个ubuntu镜像也就是几十M到100多M。

咱们基于这些Docker的镜像,能够很轻松的建立出一个容器,容器就至关于传统虚拟化里面的虚拟机。

咱们能够在这个容器中进行相应环境的部署,部署完成后,咱们能够将部署后的环境再次封装为镜像,随后,咱们能够将该镜像迁移到任何拥有Docker的机器中,而不用过多的去考虑Linux机器的具体内核等底层信息。

这样作,可让虚拟化变得更轻,而且迁移性能等会更好。这也就是,为何Docker能够更轻量级以及具备更好的平台迁移性的基本缘由。

总结来讲,容器技术与传统的虚拟机技术具备如下不一样的地方:

一、Docker容器的部署和启动很是快(秒级),而传统虚拟机相对来讲部署和启动会慢不少(分钟级)。

二、同等条件下,一个单机计算机所支持的容器数量比虚拟机数量要多得多,通常为十倍以上的差距。

三、Docker容器占硬盘较小,而传统虚拟机占硬盘较大。

相信你们通过刚才对Docker镜像与传统虚拟机镜像的分析以后,对于以上的3点内容会很好理解。接下来,咱们为你们分享第二部分的内容:下一个云计算的热点。

随着大数据时代的到来,大量的数据就比如水,而有了这些水以后,就须要用一些器具承载这些水。

若是将这些数据按正常的方式存储,在以往数据量小的时候是很方便的,但当数据量不断增大的时候,再用传统的方式存储,则杯子的性价比会愈来愈低。

此时,应用虚拟化技术能够很好的解决这些问题,因此有了云计算的发展,也有了传统虚拟化的发展。

但当这些数据量仍持续大量增长的时候,传统虚拟化的方式性价比也会变得愈来愈低,此时,咱们须要寻求一种性价比更高的云计算方案。

通过第一个知识点的分析,咱们知道了Docker技术相对于传统虚拟化技术来讲,会更加轻量。

换一种说法,利用Docker技术实现虚拟化的性价比要远远高于传统虚拟化方案的性价比。

天然,Docker技术将会成为下一个云计算的热点,而且根据目前的数据,愈来愈多的大型公司也逐步地在使用Docker。包括百度云在今年4月份的时候向开发者发布了内部邮件通知,将会全面的支持Docker。

如图,为Docker的受关注的指数图,咱们能够看到,其关注数量大不断上升。而且上升幅度很大。

20160902211715

接下来,咱们将为你们分享第三个知识点:如何在短时间内掌握Docker技术。

要在短时间内掌握Docker技术的一些基本应用,其实并非一件难事。

Docker是一个由Go语言开发的开源项目,既然是开源项目,其实不少底层的东西官方都已经实现,若是要掌握Docker的基本应用,是不难的。

可是若是要深入的掌握Docker,就必需要对Docker的底层架构等进行相应的研究,如何深刻研究这一部分咱们将在第五个知识点为你们详细分析。

若是是初学Docker,可能咱们学习的思路会比较乱,在此,咱们分享一个比较好的学习步骤与方案。

咱们能够经过如下几个步骤在短时间内快速掌握Docker:

一、对Docker的基本理念以及实践方式有初步的了解。(本次公开课)

二、经过实践了解Docker的基本应用,下一个知识点咱们即将分享这一部份内容。(本次公开课,下一个知识点)

三、经过实战掌握Docker的网络配置的知识。(1天左右)

四、掌握Docker性能监控管理方面的知识。(1-2天左右)

五、掌握一些基本的Docker项目的实践,好比如何在Docker中构建SSH镜像、如何构建Python(PHP、MySQL、Java)技术栈等、如何在公有云中(好比阿里云)部署Docker等,Dockerfile实际应用等。(2天左右)

六、学会构建Docker集群。(2-3天左右)

按照步骤掌握这几部分知识以后,咱们就能够对Docker有一个比较基础、全面的掌握了,而且也可以使用Docker进行一些实际的项目了。

接下来,咱们进入第四个知识点的分享:经过实战掌握Docker镜像、容器、仓库的管理。

首先,笔者使用的操做系统版本是CentOS7 64位,咱们须要安装Docker,只须要经过一个命令便可实现:yum -y install docker

随后,咱们还须要启动Docker,咱们能够经过如下指令启动:systemctl start docker

启动好Docker以后,咱们能够从Docker的官方获取一些镜像来使用。咱们能够经过如下指令实现镜像的获取:docker pull 镜像所在仓库:版本号

好比,咱们能够经过docker pull ubuntu:16.10获取官方的版本号为16.10的ubuntu镜像。

固然咱们也能够pull其余镜像。有了该镜像以后,咱们就能够利用该镜像轻松地建立出容器。

在此,咱们须要知道,镜像是只读不可写的,这也是镜像的一种保护机制。若是要改变镜像,能够按这种方式来:镜像–》建立成容器–》修改内容–》封装成新镜像

固然,咱们也能够直接利用Dockerfile来更新镜像。咱们可使用如下指令来查看本机有哪些已经下载的镜像:docker images

有了镜像以后,咱们能够利用这些已经在本地的镜像来建立容器。

接下来咱们将学习容器的管理。刚才咱们已经提到,容器就至关于传统虚拟化里面的虚拟机。同一个镜像能够建立多个容器,每个容器都是一个相对独立的环境,容器之间互相隔离、互不影响。

咱们可使用“docker create 参数 镜像:版本号”来建立对应的容器。好比咱们可使用: docker create -ti ubuntu:16.10来建立一个基于ubuntu:16.10镜像的容器。

那么,咱们如何新建并启动一个容器呢?咱们能够经过“docker run 参数 镜像 /bin/bash” 来实现建立并启动一个容器。好比能够经过:docker run -ti ubuntu:16.10 /bin/bash来建立并随之直接启动一个基于ubuntu镜像的容器。

若是要查看当前的机器上有哪些容器,咱们则可使用如下命令实现:docker ps -a

其中-a为参数,表示展现全部本机上的容器信息,包括已启动的、未启动的等等。经过这个参数的变化能够筛选出咱们想要查找的容器信息出来。

假如,咱们想进入某个容器,咱们须要用到容器依附的知识。咱们首先能够经过“docker ps”等指令查看出要找的容器。随后,记录容器id的前几位。(通常前4位便可)

随后,经过“docker attach 容器id”依附到对应容器中。好比,咱们可使用:docker attach ec7d来实现进入id号为ec7d的容器。id号能够经过docker ps查找。

随后能够在该容器中进行任何部署,该部署不会影响CentOS主机,也不会影响其余容器。好比咱们能够在容器中安装Python,部署大数据环境等。

部署好后,容器中拥有一套对应环境,而在外层主机以及其余容器中,不会拥有对应环境。由于他们是相对隔离的。

部署好后,假如如今咱们须要对这台容器作数据迁移,能够将该容器封装为镜像,直接迁移到其余机器中便可。不须要考虑Linux内核、版本等信息,只须要对方机器有Docker便可。迁移起来也会很是方便。而且因为该镜像不包含Linux内核,也很小,因此迁移、部署起来会很是轻量。

若是咱们想要中止某个容器,一样,首先能够经过“docker ps”等指令查看出要找的容器,而后使用:docker stop ec7d来实现中止id号为ec7d的容器。

若是要从新启动的话,可使用如下指令实现:docker start ec7d;

假如,咱们不想用某个容器了,咱们能够将该容器删除,删除容器能够用“docker rm 容器id”实现。

好比咱们能够经过如下指令删除刚才所建立的容器:docker rm ec7d 。

接下来,咱们将为你们分享Docker仓库管理的知识。

简单来讲,仓库就是存放镜像的地方。咱们能够在https://hub.docker.com/中构建属于本身的仓库。

也可使用“docker push 本地镜像”实现将本地的镜像上传到Docker仓库中。

也可使用“docker push 本地镜像”实现将本地的镜像上传到Docker仓库中。也可使用“docker search 关键词”在仓库中搜索对应的镜像。

关于仓库的管理,相对来讲比较简单,在此因为时间关系,咱们就不过多说起。接下来咱们将为你们分享第五个知识点: Docker专家养成最佳路径。

咱们已经学习了Docker的基础知识。可是,要学会Docker在实践中的应用,还须要学习Docker的网络配置的知识、Docker性能监控管理方面的知识、Docker基本项目的实践、Docker集群的构建等。

上面提到的这些都是基本的部分,若是要深刻研究Docker,还须要进行一些提高。那么,咱们如何才可以比较系统地研究Docker?有什么比较好的路线能够成为Docker方面的专家呢?

方向决定可否实现目标,坚持决定可以实现到哪一个阶段。因此方向很是重要。在此,咱们为你们分享一些较好的深刻研究Docker的步骤与路线:

1)Docker架构剖析

2)镜像技术底层组织结构分析

3)Docker仓库底层架构分析

4)容器技术底层原理分析

5)Docker API接口高级实战应用

6)卷插件及API接口实战

7)Docker高级网络配置解决方案

8)Docker集群管理实践

9)Docker的测试技术

10)Libcontainer技术实践

11)Docker安全策略实践

12)Docker二次开发

13)Docker源码深度剖析

按照这个路线学习下来,会让你比较清晰、系统地掌握Docker,这一个路线相对来讲也是一个比较好的学习研究路线。

好,本次的分享内容咱们就分享到这里,这一期的内容是第一次Docker的内容,为了方便更多朋友学习,因此相对来讲基础一些,若是各位对刚才体系中的某一部份内容感兴趣,也能够互相沟通学习。

但愿经过这一期的内容,可以让你们对Docker的架构以及Docker的学习思路有一个清晰的了解,并可以经过实战实现Docker的虚拟化,包括镜像的管理、容器的管理以及仓库的管理等。

互动筛选

Q1:刚才提到容器迁移,也是基于Docker的V2V,Docker 有没有P2V或者V2P的相关技术?P:物理机,V虚拟机

A1:其实在Docker中,须要依靠一个基本的主机系统,因此Docker更多的关注上层,而对底层没有过多影响。

Q2:容器的日志收集怎么作的?

A2:有两种方案,一、将日志直接挂载到主机磁盘,二、运行一个容器,这个容器专门作日志收集。

Q3:如何监控容器性能?

A3:监控方案有不少,总的来讲,两种:一、利用一些工具,好比cAdvisor等实现。二、本身写一些运维程序,好比利用Python写一些程序进行监控。前者用得多。

Q4:容器之间的应用如何通讯 ?

A4:能够在容器之间开辟一个隧道进行通讯,具体的实践部分个人一套录播课程中有,也能够直接网上找一下隧道建立的知识实现。

Q5:默认运行一个ubuntu容器,须要多少内存 ?

A5:Docker中底层内存是共享的,具体须要多少内存须要看容器内运行的东西,只须要保证多个容器的内存使用总和小于本地内存便可。

Q6:Docker是否合适支持db?

A6:Docker支持DB,由于Docker中容器中具有一套独立的操做系统环境,因此不管是数据库仍是其余的,只要操做系统支持,Docker就支持。

Q7:docker能够有几个bridge?

A7:docker会默认建立一个名为docker0的网桥,也能够自定义网桥实现。

Q8:对于Oracle这种须要修改内核参数的,docker能支持么?

A8:可使用Oracle XE实现。

Q9:docker用go开发的,二次开发有其它语言可选吗?

A9:若是是修改一些内容,那是须要用Go语言,若是独立开发一些模块,彻底能够用其余语言,接口的方式实现就行。

原文:http://www.dockerinfo.net/2443.html
上一篇: Docker容器 深度剖析容器之“状态”下一篇: 从零开始搭建Jenkins+Docker自动化集成环境
相关文章
相关标签/搜索