1.docker的相关知识
容器化越来越受欢迎,因为容器是:
●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。
1.1 docker的概念
docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。
容器在内核中支持2种重要技术:
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。
1.2 docker三个重要概念
(1)image镜像
docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下一个已经做好的镜像来直接使用
创建容器的基础,就是一个可执行的压缩包,是一个只读模板 ,包含运行应用程序的所有资源
(2)container容器
docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序
基于镜像创建的运行实例,容器间是相互隔离的
(3)repostory仓库
仓库是集中存储镜像文件的沧桑,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag) 仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下载,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务。
用于集中存放镜像的地方,可分为公有仓库与私钥仓库
1.3 docker的主要用途
官方就是Bulid 、ship、run any app/any where,编译、装载、运行、任何app/在任意地方都能运行。就是实现了应用的封装、部署、运行的生命周期管理只要在glibc的环境下,都可以运行。运维生成环境中:docker化。
1.发布服务不用担心服务器的运行环境,所有的服务器都是自动分配docker,自动部署,自动安装,自动运行
2再不用担心其他服务引擎的磁盘问题,cpu问题,系统问题了
3资源利用更出色
4自动迁移,可以制作镜像,迁移使用自定义的镜像即可迁移,避免出现问题
5管理更加快捷方便
1.4 docker与虚拟机的区别
区别 docker 虚拟机
内核使用 共享宿主机的操作系统内核 拥有独立的操作系统内核
启动速度 启动速度快,秒级速度 启动速度较慢,分钟级
性能 接近云原生,几乎无损耗 通过hypervisor对主机进行虚拟访问,会占用更多的资源,最大损耗将近百分之五十
容量 单机容量成百上千 几十个
隔离 namespace(命名空间)隔离资源,cgroup资源限制 完全隔离
namesapce(命名空间)的隔离种类
UTS:主机名与域名
IPC:信号量&#x