Docker简介
虚拟化
virtualization ,是一种资源管理技术,将计算机的各种实体资源,服务器,网络,内存及存储,予以抽象,转换后呈现出来,打破实体结构间不可分割的障碍,使用户以比原本状态更好的状态来应用这些资源.
这些资源和你的新虚拟部分是不接受现有资源的假设方式,低于或 物理组态所限制.一般指的虚拟化资源包括计算能力和资料存储.
在实际的生产环境中,虚拟化技术主要用于解决高性能物理硬件过剩和老旧硬件产能过低的重组重用,透明化底层物理硬件,从而最大化利用物理硬件,对资源进行充分利用.
虚拟化技术种类很多,例如:软件虚拟化,硬件虚拟化,内存虚拟化,网络虚拟化,桌面虚拟化,服务虚拟化,虚拟机等等.
Docker
Docker是一个开源的项目,诞生于2013年,是dotCloud的一个闲散项目,使用的是Google公司的go语言开发.由于docker项目在之后加入了linux基金会,遵循Apach2.0协议,所以项目的代码在Github上进行维护.
Docker由于开园后收到广泛的关注,以至于原公司dotCloud公司改名为Docker Inc,RedChat 已经在RHEL6.5中支持Docker;Google也在其PaaS产品中广泛应用.
Docker项目的目标是实现轻量级项目的操作系统虚拟化解决方案.Docker的基础是Linux容器,等技术.
在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简单便捷,用户操作Docker容器就像操作一个快速轻量级的虚拟机一样简单.
为什么选择Docker?
1.上手快
用户只需要几分钟,就可以把自己的程序Docker化,Docker依赖于写时复刻
(copy-on-write)模型,使用修改应用程序也非常迅速,可以说到达随心所欲,代码即改 的境界
随后,就可以创建容器来运行应用程序了,大多数Docker不到1秒就可以启动,由于去除了管理程序的开销,Docker容器拥有很高的性能,同时可以在1台宿主机中运行更多的容器.使用户,可以充分的利用系统资源.
2.职责的逻辑分类
使用Docker开发人员只需要关心容器中的应用程序,而运维人员只需要关注如何管理容器.
Dockerd 的设计目的就是在于加强开发人员的开发环境与应用程序要部署的环境一致性.从而降低那种"开发时一切正常,肯定是运维的问题(测试环境都是正常的,上线之后出的问题就归结为肯定是运维人员的问题)"
3.快速高效的开发生命周期
Docker的目的之一,就是缩短代码的从开发,测试到部署,上线运行的周期,让你的应用设备具有可移植性,易于构建,并且已与协作.(通俗一点,就是Docker就像一个盒子,里面可以装很多物件,如果需要这些物件,可以直接将该大盒子拿走,而不需要从盒子中一件一件的取).
4.鼓励使用面向服务的架构
Docker还鼓励使用面向服务的体系结构的微服务架构.Docker推荐单个容器只运行一个程序或进程,这样就形成了一个分布式的应用模型,在这种模型下,应用程序或者服务都可以表示为一系列的内部互联的容器,从而使分布式部署应用程序,拓展到调试应用程序都变得非常简单,同时也提高了程序的内省性.(当然,可以在一个容器中运行多个应用程序)
容器与虚拟机的比较
下面的土拍你比较了Docekr和传统的虚拟化方式的不同之处,可以看见,容器就是操作系统层面上是实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现.
与传统的虚拟机相比,Docker优势体现在启动速度快,占用体积小.
Docker组件
Docker服务器与客服端
Docekr是与给客户端-服务器(C/S)架构程序.Docker客户端只需要想DOcker’服务器或者守护进程发出请求,服务器或者守护进程将完成所有的工作并且返回结果.Docekr提供了一个命令行工具Docekr以及一整套RESTfulAPI.你可以在同一台宿主机上运行Docker收回进程和客户端,也可以从本地的Docekr客户端连接到运行在另一台宿主机上的远程Dockekr守护进程.
Docker镜像与容器
镜像就是构建Docker的基石.用户基于镜像来运行自己的容器.镜像使Docker生命周期中的构建部分.镜像使基于联合文件系统的一种层次结构,由一系列指令一步一步构建出来的.例如:
添加一个文件,
执行一条命令,
打开一个窗口.
也可以将镜像当作容器的源代码.镜像的体积很小,非常便携,易于分享,存储和更新.
Docker可以帮你构建和部署容器,你只需要把你自己的应用程序或者服务打包放进容器即可.
容器是基于镜像启动的,容器中可以运行一个或者多个进程.我们可以认为,镜像是DOcker生命周期中的构建和打包环节,而容器则是启动和执行阶段.容器基于镜像启动,一旦容器启动完成,我们就可以登录到容器中安装自己需要的软件或者服务.
所以Docker容器就是:
一个镜像格式;
一些标准操作;
一个执行环境;
Docker借鉴了标准集装箱的概念,标准集装箱将货物运送到世界各地,Dcoerk模型将这个运用到自己的设计中,唯一不同的就是,集装箱运送货物,而Dokcer运送软件.
和集装箱一样,Docker在执行上述操作时,并不关心容器中装的是什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的.所有的容器都按照相同的格式将内容"装在"进去.
Docker也不关心你将要把容器运到何方:我们可以在自己的笔记中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中.想标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用.
Registry(注册中心)
Docker用Registry来保存用户构建的镜像.Registry分为公用和私有两种.Docekr公司运营公共 的Registry叫做DocekrHub.用户可以在DocekrHub注册账号,分享并且保存自己的镜像(说明:DocekrHub下载镜像缓慢,可以自己构建私有的Registry).
https://hub.docker.com/
Dcoekr安装与启动
安装Docekr
ip addr
查看当前系统的ip
设置国内的镜像站点
[root@localhost ~]#systemctl start docker
启动命令
systemctl status docker
查看状态
systemctl stop docker
停止命令
停止之后再次查看状态,会发现,状态已经停止
systemctl restart docker
重启
常用命令在这里插入代码片
镜像相关命令
查看镜像
docker images
搜索
查看容器
启动与停止容器
拷贝文件
cp命令,不管你的容器是停止还是启动的,都可以复制
目录挂载
删除容器
运行中的容器无法删除,必须要停止之后才可以删除