1、Docker技技术专题讲术专题讲座座简介简介lDocker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。最重要的是,它不依赖于任何语言、框架或系统。l目标是实现轻量级的操作系统虚拟化解决方案l基础:Linux容器(LXC)lGo语言实现lApache2.0协议lGitHub上进行维护对比虚拟机对比虚拟机特性虚拟机容器启动分钟级秒级资源消耗很大,单机一般几十个VM,硬盘使用一般为GB很小,单机支持上千个容器
2、,硬盘使用一般为MB性能通过对硬件层的模拟,增加了系统调用链路的环节,有性能损耗共享Kernel,接近原生,几乎没有性能损耗操作系统覆盖支持Linux、Windows、Mac等仅仅Kernel所支持的OSDocker应用场景应用场景lweb应用的自动化打包和发布l自动化测试和持续集成、发布l在服务型环境中部署和调整数据库或其他的后台应用l从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境。Docker 带来的好处带来的好处安装安装l安装Docker所需条件:需要64位架构的系统和Linux3.10内核或更高版本。lDocker有很多种安装的选择,推荐
3、在Ubuntu下面安装,因为docker是在Ubuntu下面开发的,安装包测试比较充分,可以保证软件包的可用性。l添加Docker的官方apt软件源/etc/apt/sources.list.d/docker.listdebhttps:/apt.dockerproject.org/repoubuntu-trustymain添加成功后,更新apt软件包缓存$sudoapt-getupdatel安装Docker$sudoapt-getinstall-ydocker-engineDocker的的Hello World启动docker后台Daemon:$sudosystemctlstartdocker
4、跑我们第一个HelloWorld容器:$sudodockerrun-i-tfedora/bin/echohelloworldhelloworld可以看到在运行命令行后的下一行会打印出经典的HelloWorld字符串。3个内部组件个内部组件lDocker ImagesDockerimage是Dockercontainer最基本的模板。image通过容器使系统和应用易于安装,Dockerimage是用来运行的容器,你可以在这里https:/ ContainerDocker容器(DockerContainer)是一个Image,在运行的Dockerimage上读取和写入。Docker是一个联合的文件
5、系统作为容器后台,容器的任何变化,都将被保存在一个基本image新的层上。我们安装应用程序的层就是容器。每个在主机上运行的容器都是独立的,因此,提供了一个安全的应用平台。lDocker RegistryDockerregistry是为Dockerimages提供的库。它提供了公共和私有库。公共Docker库被叫做DockerHub。这里我们能够上传push和pull我们自己的images。Docker架构图架构图Docker总架构图总架构图Docker运行案例分析运行案例分析-docker pullDocker运行案例分析运行案例分析-docker runDocker 镜像镜像l每个镜像都由很
6、多层次构成,Docker使用UnionFS将这些不同的层结合到一个镜像中去。l使用dockerpull命令来从仓库获取所需要的镜像$sudodockerpullubuntu:12.04l使用dockerimages显示本地已有的镜像创建镜像创建镜像l从DockerHub获取已有镜像并更新,最后使用dockercommit命令来提交更新后的副本。l利用Dockerfile来创建镜像Dockerfile中每一条指令都创建镜像的一层,例如:编写完成Dockerfile后可以使用dockerbuild来生成镜像#ThisisacommentFROMubuntu:14.04MAINTAINERDocke
7、rNewbeeRUNapt-get-qqupdateRUNapt-get-qqyinstallrubyruby-devRUNgeminstallsinatra镜像导出、导入、移除镜像导出、导入、移除l如果要导出镜像到本地文件,可以使用dockersave命令。$sudodockersave-oubuntu_14.04.tarubuntu:14.04l可以使用dockerload从导出的本地文件中再导入到本地镜像库,例如:$sudodockerload-inputubuntu_14.04.tarl如果要移除本地的镜像,可以使用dockerrmi命令。l使用下面的命令可以清理所有未打过标签的本地镜
8、像$sudodockerrmi$(dockerimages-q-fdangling=true)Docker 容器容器l启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。l新建并启动$sudodockerrunubuntu:14.04/bin/echoHelloworldHelloworldl启动已终止容器dockerstartl添加-d参数来实现后台运行,不直接把执行命令的结果输出在当前宿主机下。l使用dockerstop来终止一个运行中的容器l使用dockerattach命令进入容器进行操作l如果要导出本地某个容器,可以使用dock
9、erexport命令。$sudodockerexport7691a814370eubuntu.tarl可以使用dockerimport从容器快照文件中再导入为镜像$catubuntu.tar|sudodockerimport-test/ubuntu:v1.0l使用dockerrm来删除一个处于终止状态的容器。l用dockerrm$(dockerps-a-q)清理所有处于终止状态的容器仓库仓库l目前Docker官方维护了一个公共仓库DockerHub,其中已经包括了超过15,000的镜像。ldockersearch命令来查找官方仓库中的镜像ldockerpull命令来将它下载到本地l有时候使用D
10、ockerHub这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。lregistry是官方提供的工具,可以用于构建私有的镜像仓库Docker 数据管理数据管理l使用数据卷和数据卷容器在Docker内部以及容器之间管理数据。l挂载一个主机目录作为数据卷$sudodockerrun-d-P-nameweb-v/src/webapp:/opt/webapptraining/webapppythonapp.pyDocker 中的网络功能介绍中的网络功能介绍lDocker允许通过外部访问容器或容器互联的方式来提供网络服务。l外部访问容器通过-P或-p参数来指定端口映射$sudodockerr
11、un-d-p5000:5000training/webapppythonapp.pyl容器互联使用-link参数可以让容器之间安全的进行交互$sudodockerrun-d-P-nameweb-linkdb:dbtraining/webapppythonapp.pyDocker 网络网络多台物理主机之间的容器互联(多台物理主机之间的容器互联(暴露容器到暴露容器到真实网络中)真实网络中)一张图总结一张图总结 Docker 的命令的命令底层实现底层实现lDocker底层的核心技术包括Linux上的名字空间(Namespaces)、控制组(Controlgroups)、Union文件系统(Union
12、filesystems)和容器格式(Containerformat)。l大家虽然都共用一个内核和某些运行时环境(例如一些系统命令和系统库),但是彼此却看不到,都以为系统中只有自己的存在。这种机制就是容器(Container),利用名字空间来做权限的隔离控制,利用cgroups来做资源分配。AUFS(AnotherUnionFS)lAUFS是一种UnionFS,简单来说就是支持将不同目录挂载到同一个虚拟文件系统下的文件系统,更进一步的理解,AUFS支持为每一个成员目录(类似GitBranch)设定readonly、readwrite和whiteout-able权限,同时AUFS里有一个类似分层的
13、概念,对readonly权限的branch可以逻辑上进行修改(增量地,不影响readonly部分的)。l典型的启动Linux运行需要两个FS:bootfs+rootfs:Docker的开源之路-用户社区维护、源代码管用户社区维护、源代码管理、创建合作伙伴生态圈理、创建合作伙伴生态圈应用案例应用案例-在测试中使用在测试中使用Dockerl使用Docker测试静态网站1.Sample网站的初始Dockerfile2.构建Sample网站和tomcat镜像3.从Sample网站和tomcat镜像构建容器4.修改网站应用案例应用案例-中小企业使用中小企业使用Docker标准化开发、标准化开发、测试和生产环境测试和生产环境应用案例应用案例-基于基于 Docker 构建服务构建服务应用案例应用案例-分布式分布式Docker集群集群lKuberneteslMesosl学习资源学习资源lTheDockerBook-第一本Docker书lDocker-从入门到实践lDocker官网https:/
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100