CentOS系统下ker的安装配置及使用详解_第1页
CentOS系统下ker的安装配置及使用详解_第2页
CentOS系统下ker的安装配置及使用详解_第3页
CentOS系统下ker的安装配置及使用详解_第4页
CentOS系统下ker的安装配置及使用详解_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

docker简介Docker提供了一个可以运行你的应用程序的封套(envelope),或者说容器。它原本是dotCloud启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,导致dotCloud把它重命名到DockerInc。它最初是用Go语言编写的,它就相当于是加在LXC(LinuXContainers,linux容器)上的管道,允许开发者在更高层次的概念上工作。Docker扩展了Linux容器(LinuxContainers),或着说LXC,通过一个高层次的API为进程单独提供了一个轻量级的虚拟环境。Docker利用了LXC,cgroups和Linux自己的内核。和传统的虚拟机不同的是,一个Docker容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。Docker类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点:虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。虚拟化系统一般都是指操作系统镜像,比较复杂,称为"系统”;而docker开源而且轻量,称为"容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。Docker会像一个可移植的容器引擎那样工作。它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种Linux服务器上。这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。Docker也是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。Docker由下面这些组成:Docker服务器守护程序(serverdaemon),用于管理所有的容器。Docker命令行客户端,用于控制服务器守护程序。Docker镜像:查找和浏览docker容器镜像。docker特性文件系统隔离:每个进程容器运行在完全独立的根文件系统里。资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。3两个基础概念images与containerContainer和Image在Docker的世界里,Image是指一个只读的层(Layer),这里的层是AUFS里的概念,最直观的方式就是看一下docker官方给出的图:Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不同的Container可以共享底层的只读文件系统(同一个Kernel),使得你可以跑N多个Container而不至于你的硬盘被挤爆了!这个只读的层就是Image!而如你所看到的,一个可写的层就是Container。那Image和Container的区别是什么?很简单,他们的区别仅仅是一个是只读的层,一个是可写的层,你可以使用dockercommit命令,将你的Container变成一个Image,也就是提交你所运行的Container的修改内容,变成一个新的只读的Image,这非常类似于gitcommit命令。4docker安装与启动安装docker[root@localhost/]#yum-yinstalldocker-io更改配置文件[root@localhost/]#vi/etc/sysconfig/dockerother-args歹U更改为:other_args="--exec-driver=lxc--selinux-enabled[root@localhost/]#servicedockerstartStartingcgconfigservice: [OK]Startingdocker: [OK]将docker加入开机启动[root@localhost/]#chkconfigdockeron基本信息查看dockerversion:查看docker的版本号,包括客户端、服务端、依赖的Go等[root@localhost/]#dockerversionClientversion:1.0.0ClientAPIversion:1.12Goversion(client):go1.2.2Gitcommit(client):63fe64c/1.0.0Serverversion:1.0.0ServerAPIversion:1.12Goversion(server):go1.2.2Gitcommit(server):63fe64c/1.0.0dockerinfo:查看系统(docker)层面信息,包括管理的images,containers数等[root@localhost/]#dockerinfoContainers:16Images:40StorageDriver:devicemapperPoolName:docker-253:0-1183580-poolDatafile:/var/lib/docker/devicemapper/devicemapper/dataMetadatafile:/var/lib/docker/devicemapper/devicemapper/metadataDataSpaceUsed:2180.4MbDataSpaceTotal:102400.0MbMetadataSpaceUsed:3.4MbMetadataSpaceTotal:2048.0MbExecutionDriver:lxc-0.9.0KernelVersion:2.6.32-431.el6.x86_645镜像的获取与容器的使用镜像可以看作是包含有某些软件的容器系统,比如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像"衍生”,该镜像包含基本的ubuntu系统。再比如,hipache是一个官方的镜像容器,运行后可以支持http和websocket的代理服务,而这个镜像本身又基于ubuntu。搜索镜像dockersearch<image>:在dockerindex中搜索image[root@localhost/]#dockersearchubuntu12.10NAME DESCRIPTION STARSOFFICIALAUTOMATEDTOC\o"1-5"\h\zmirolin/ubuntu12.10 0marcgibbons/ubuntu12.10 0mirolin/ubuntu12.10_redis 0chug/ubuntu12.10x32 UbuntuQuantalQuetzal12.1032bitbasei...0chug/ubuntu12.10x64 UbuntuQuantalQuetzal12.1064bitbasei...0下载镜像dockerpull<image>:从dockerregistryserver中下拉image[root@localhost/]#dockerpullchug/ubuntu12.10x64查看镜像dockerimages:歹0出imagesdockerimages-a:列出所有的images(包含历史)dockerimages--tree:显示镜像的所有层(layer)dockerrmi<imageID>:删除一个或多个image[root@localhost/]#dockerimagesREPOSITORYTAG IMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB[root@localhost/]#dockerimages-aREPOSITORYTAG IMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB<none> <none>31edfed3bb884monthsago175.8MB[root@localhost/]#dockerimages--treeWarning:'--tree'isdeprecated,itwillberemovedsoon.Seeusage.L-31edfed3bb88VirtualSize:175.8MBL-0b96c14dafcdVirtualSize:270.3MBTags:chug/ubuntu12.10x64:latest[root@localhost/]#dockerrmi<imageID>....使用镜像创建容器[root@localhost/]#dockerrunchug/ubuntu12.10x64/bin/echohelloworldhelloworld交互式运行[root@localhost/]#dockerrun-i-tchug/ubuntu12.10x64/bin/bashroot@2161509ff65e:/#查看容器dockerps:列出当前所有正在运行的containerdockerps-l:列出最近一次启动的containerdockerps-a:列出所有的container(包含历史,即运行过的container)dockerps-q:列出最近一次运行的containerID[root@localhost/]#dockerpsCONTAINERIDIMAGE COMMANDCREATEDSTATUSPORTSNAMESccf3de663dc9chug/ubuntu12.10x64:latest/bin/bash22hoursagoUp22hourssharp_hypatia[root@localhost/]#dockerps-lCONTAINERIDIMAGE COMMANDCREATEDSTATUS PORTSNAMESf145f184647bchug/ubuntu12.10x64:latest/bin/bash6secondsagoExited(0)3secondsagocompassionate_galileo[root@localhost/]#dockerps-aCONTAINERIDIMAGE COMMANDCREATEDSTATUS PORTSNAMESf145f184647bchug/ubuntu12.10x64:latestcompassionate_galileo/bin/bash30secondsagoExited(0)26secondsagof4624b42fe7esharp_wilsonchug/ubuntu12.10x64:latest/bin/bash2minutesagoExited(0)2minutesagoccf3de663dc9sharp_hypatiachug/ubuntu12.10x64:latest/bin/bash22hoursagoUp22hours9cbaa79b9703agochug/ubuntu12.10x64:latestberserk_mcclintock/bin/bash22hoursagoExited(127)36minutes2161509ff65echug/ubuntu12.10x64:latest/bin/bash22hoursagoExited(0)22hoursagobackstabbing_mclean[root@localhost/]#dockerps-qccf3de663dc9再次启动容器dockerstart/stop/restart<container>:开启/停止/重启containerdockerstart[container_id]:再次运行某个container(包括历史container)dockerattach[container_id]:连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach一个container实例)dockerstart-i<container>:启动一个container并进入交互模式(相当于先start,在attach)dockerrun-i-t<image>/bin/bash:使用image仓^建container并进入交互模式,loginshell是/bin/bashdockerrun-i-t-p<host_port:contain_port>:映射HOST端口到容器,方便外部访问容器内服务,host_port可以省略,省略表示把container_port映射到一个动态端口。注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。删除容器dockerrm<container...>:删除一个或多个containerdockerrm'dockerps-a-q':删除所有的containerdockerps-a-q|xargsdockerrm:同上,删除所有的container6持久化容器与镜像6.1通过容器生成新的镜像运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用dockercommit<container-id><image-name>命令可以把一个正在运行的容器变成一个新的镜像。dockercommit<container>[repo:tag]将一个container固化为一个新的image,后面的repo:tag可选。

REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB[root@localhost/]#dockercommitd0fd23b8d3acchug/ubuntu12.10x64_2daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b[root@localhost/]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64_2latestdaa11948e23d6secondsago270.3MBchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MBREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB[root@localhost/]#dockercommitd0fd23b8d3acchug/ubuntu12.10x64_2daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b[root@localhost/]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEchug/ubuntu12.10x64_2latestdaa11948e23d6secondsago270.3MBchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB6.2持久化容器export命令用于持久化容器dockerexport<CONTAINERID>>/tmp/export.tar6.3持久化镜像Save命令用于持久化镜像dockersave镜像ID>/tmp/save.tar6.4导入持久化container删除container2161509ff65e导入export.tar文件[root@localhost/]#cat/tmp/export.tar|dockerimport-export:latestaf19a55ff0745fb0a68655392d6d7653c29460d22d916814208bbb9626183aaaREPOSITORYTAG IMAGEIDCREATEDVIRTUALSIZEexport latestaf19a55ff074 34secondsago270.3MBchug/ubuntu12.10x64_2latestdaa11948e23d 20minutesago270.3MBchug/ubuntu12.10x64latest0b96c14dafcd4monthsago270.3MB6.5导入持久化image删除imagedaa11948e23d导入save.tar文件[root@localhost/]#dockerload</tmp/save.tar对image打tag[root@localhost/]#dockertagdaa11948e23dload:tagexport-import与save-load的区另U导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论