Docker入门
上一篇 / 下一篇 2018-07-29 15:56:22 / 个人分类:docker
文章来源
- 文章来源:【转载】
f(\9h;`dY"?0
如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完美组合,更加方便微服务架构运维部署落地。51Testing软件测试网 L8V8T+o1Q,_
本文详细解释介绍Docker入门相关内容,后期重点关注Docker在微服务体系中的使用。在了解Docker之前我们先考虑几个问题:1、Docker是什么?2、为什么要使用Docker,它有什么优势?带着这些问题我们来看看下面的内容。51Testing软件测试网+p-V"|6s.x sJ
什么是Docker?51Testing软件测试网O)Q MjJ O
Docker 是世界领先的软件容器平台。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能。
](IE5o+E*H2m%k pD0Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。51Testing软件测试网zt jH4n)J8a;K M
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。51Testing软件测试网\0h+K!j?7\
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。51Testing软件测试网?6G*PPs6lSI
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。
K4roW&v6k u%F0为什么要使用Docker
}~)gu`Igk0容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。51Testing软件测试网)I8XU1BeR
具体说来,Docker 在如下几个方面具有较大的优势。51Testing软件测试网6L]gn9YN
1、更快速的交付和部署51Testing软件测试网8\%\|5HRx!CPvq:g
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。51Testing软件测试网q6XJ5| S6aA&i
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
$Bw@dl_N,q02、更高效的虚拟化51Testing软件测试网x9^x:i,Q,D#wI
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
`:hS:Qj3DOag03、更轻松的迁移和扩展51Testing软件测试网(A-p6W8LO
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。51Testing软件测试网 d*k'X1]M+BNw
4、更简单的管理
#f@skGh.Y^0使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。51Testing软件测试网9B mWjcl\AT
Docker vs VM51Testing软件测试网3bQJ p-j.iA9yO
从下图可以看出,VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活。
#cLzA-ivm*k0Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
w#gEU rY#[T0作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多;Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。51Testing软件测试网J5~'@H \M1@1r7v
相关概念
!Q O?@:O7zJ,_o0Docker是CS架构,主要有两个概念:51Testing软件测试网}4X%P o|V/R!I,\
Docker daemon: 运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互
}x2LC.i{0Docker client: Docker 命令行工具,是用户使用Docker的主要方式,Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon51Testing软件测试网9sVPS/Lu
51Testing软件测试网@hnH R v:Y6k"~+?
51Testing软件测试网I/I \7KtnI6_
了解了Docker的组成,再来了解一下Docker的三个主要概念:51Testing软件测试网D@*BJ;L;k"k `
51Testing软件测试网9IL CS,A
Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。51Testing软件测试网4r3GQ'Qr2G
51Testing软件测试网X6G!J;pgQ8e
Docker container:容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
TL!G1v5CIi1C#v6T8S+\051Testing软件测试网&s