Docke技术简介
1、Docker技术解决了什么问题? 2、Docker之helloworld 3、Docker技术基础 4、Docker重要概念 5、Docker使用步骤及应用方向 6、Docker下的开发部署流程 Docker Docker基于容器技术的轻量级虚拟化解决方案 Docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进行封装抽象(后面会介绍此两种技术),为用户提供了创建和管理容器的便捷界面(包括命令行和API) Docker 是一个开源项目,诞生于 2013 年初,基于 Google 公司推出的 Go 语言实现 微软,红帽Linux,IBM,Oracle等主流IT厂商已经在自己的产品里增加对Docker的支持。 Google 每周启动超过20亿个容器进行业务服务,于上个世纪90年代已经开始大规模使用容器技术 传统的开发部署流程 (仅包括纯技术部分): 问题 1、资源利用效率低 2、单物理机多应用无法有效隔离(进程空间,cpu资源,磁盘) 3、运维部署不便 4、测试、版本管理复杂 5、迁移成本高 6、传统虚拟机,空间占用大,启动慢,管理复杂 。。。。。 Docker–轻量级虚拟化容器技术 1、秒级启动,秒级停止,空间资源占用极少(几M) 2、实现进程级别的隔离 3、可在普通服务器上建立上百个docker实例 4、加快开发测试部署的速度 5、简化版本管理 开发和运维的有效隔离 一个IT系统应该包含如下几个层次: 应用程序 运行时平台(bin/framework/lib) 操作系统 硬件(基础设施) 开发人员的主要工作是应用程序的编码、构建、测试和发布,涉及应用程序和运行时平台这两层。而运维人员的工作则涉及从硬件、操作系统到运行时平台的安装、配置、运行监控、升级和优化等工作。docker提供了一种运行时环境,隔离了上层应用于下层操作系统和硬件的关联,使得术业有专攻 docker之helloworld 1、安装docker 在ubuntu 14.04下 执行一条命令即可安装 apt-get install docker-io 2、运行 docker run busybox /bin/echo "HelloWorld" docker背后干了什么 我们创建了一个容器 它拥有: 文件系统(基于busybox镜像) 网络栈(具有私有网络服务) 进程空间 自动安装 docker会自动检查本地是否有busybox镜像(一个测试版本的linux系统),如果没有则自动下载并启动 通过调用宿主机上的bash启动进程,并打印 “Helloworld“ Docker 技术基础-NameSpace 实现资源隔离 1、UTS: 主机名隔离 2、IPC: 进程间通信隔离 3、PID: 进程树隔离 4、NS: 挂载点隔离 5、NET: 网络接入,包括接口的隔离 6、USER: 将本地的虚拟user-id映射到真实的user-id NameSpace-UTS隔离 初始主机名 创建一个容器并在容器内设置新的主机名 注意这里使用的是LinuxAPI 不是docker 执行代码,进入容器 检查是否设置为新的主机名 Docker的技术基础-CGROUP 计算机资源使用上的隔离,通常我们叫做使用限额 Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。 Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐。 Accounting: 一些审计或一些统计,主要目的是为了计费。 Control: 挂起进程,恢复执行进程 CGROUP-CPU使用限制 1、测试代码 2、运行测试代码,会将cpu全部占满 3、创建Cgroup cpu限制文件 4、设置限额为20% 5、将进程放入cpu限额管理 6、cpu利用率会减少到20%以内 Docker的技术基础-Union文件系统 功能类似diff命令,通过分层的方式记录文件的累积变化情况。 例如 tomcat,oracle,weblogic镜像都可以共享同一个Linux基础镜像,每一个镜像保存的只是在基础镜像上他们修改的部分 Docker的镜像可以非常多,但是每个都很小,而且加载启动非常快。 docker的重要概念 镜像(image) 容器(container) 数据卷(volumes) 链接(links) 仓库(Repository) docker之镜像 Docker 的镜像类似虚拟机的快照,但是更轻量 例如:一个镜像可以包含一个完整的 Linux 操作系统环境,里面仅安装了 Tomcat或用户需要的其它应用程序 镜像可以用来创建容器 docker
原文链接:https://max.book118.com/html/2018/1014/7160100164001152.shtm