Doker学习01-Docker的基本概念
Docker概述
Docker出现的原因
一款产品有两个环境:开发(开发环境)和上线(运维环境)。
环境配置和切换过于麻烦,每一台机器都要部署环境(集群Redis,ES,Hadoop),费时费力。
解决思路:发布一个项目(jar+(redis+mysql+jdk+es))
的同时能不能都带上环境安装打包?
传统思路:开发项目,运维部署项目和环境配置。
现在:开发打包部署上线,一套流程做完。
Docker为以上问题,提出了解决方案!
Docker的思想来自于集装箱:通过特殊的隔离机制,将服务器利用到机制。
Docker历史
1.Docker诞生于2013年
2.Docker & LXC:Docker的第一个执行环境:LXC;但从0.9版本开始被Libcontainer取代
3.Docker & Libcontainer:Libcontainer为Docker封装了Linux提供的基础功能,如cgroups,namespaces,netlink和netfilter等
4.Docker & RunC: 2015年,Docker发布了RunC,一个轻量级的跨平台的容器运行;可以直接利用Libcontainer运行容器
5.Docker & OCI(The Open Containers Initiative): OCI是一个轻量级的开放式管理架构,由Docker,CoreOS和容器行业的其他领导厂商2015年建立,维护一些项目,制定容器运行的规范等
6.Docker & Containerd: 2016年,Docker分拆了Containerd,并将其捐献给了社区;使得Docker将容器的管理功能移出Docker的核心引擎并移入了一个单独的守护进程(containerd)
在容器技术出来以前,都是使用虚拟机技术,相比于虚拟机几个G,几分钟的启动时间,Docker做到了几个M甚至几KB的容量和秒级开启时间,这主要得益于它并不像虚拟机虚拟出操作系统或者内核,而是只保留了最核心的环境,十分的小巧。所有的程序员都必须要会docker!
Docker介绍
Docker是基于GO语言开发的开源项目!!
Docker与虚拟机的比较
虚拟机技术缺点:启动慢,占用资源多,冗余步骤多
Docker容器化技术:不是模拟出一个完整的操作系统。
总结:
-
传统虚拟机:虚拟出一系列硬件,运行一个完整的操作系统,然后在这个系统安装和运行软件
-
容器内的应用直接运行在宿主机上,容器没有自己的内核,也没有虚拟出硬件,所以十分轻便
-
每个容器是相互隔离的,每个容器都有一个属于自己的文件系统,互不影响。
Docker作用
可以实现了 DevOps(开发,运维)
-
应用更快速的交付和部署:打包镜像发布测试,一键运行
-
更便捷的升级和扩缩容:使用了Docker,部署应用就像搭积木一个,项目打包为一个镜像,方便扩展
-
更简单的系统运维:在容器化之后,开发和测试环境都是高度一致的。
-
更高效的计算资源利用:Docker是内核级别的虚拟化,可以在一个物理机上运行多个容器实例,容器的性能可以被压榨到极致。
Docker基本组成
架构图
基本概念
-
镜像
(image)
:docker镜像好比是一个模板,可以通过这个模板创建容器服务,tomcat镜像=》run》tomcat01容器,通过镜像可以创建多个容器(最终服务运行或项目运行就是在容器中的) -
容器
(container)
:docker利用容器技术,独立地运行一个或一组应用,通过image
来创建。
启动,停止,删除,基本命令
目前就可以将容器理解为一个简单的Linux系统 -
仓库
(repository)
:仓库是存放镜像的地方。有公有和私有仓库之分。
Docker Hub(默认是国外的),阿里云。。。都有容器服务器(配置镜像加速)