自主学习:Docker
笔记编写者:房佳亮
学习视频:Bilibili遇见狂神说
Docker概述
1、Docker为什么会出现?
(1)Docker产生的问题
在以前一款产品要进行开发和上线两套环境(测试环境、生产环境)!一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验
开发一个项目(jar+(redis,mysql,jdk,es)),项目能不能带上环境安装打包?
环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上不可正常工作”的问题。
总结:
- 环境版本不一致,不可运行;
- 每台机器都要进行环境配置,费时费力;
- 开发与运维分开,造成沟通不一致的问题;
(2)Docker给以上问题提出了解决方案:
- 传统:开发人员打包项目,运维来部署
- 现在:开发打包部署上线,一套就成做完。
java----(jar+环境)----打包项目带上环境(镜像)----发布到Docker仓库:商店----下载我们发布的镜像----直接运行即可
Docker的思想就来自于集装箱!
隔离:Docker的和信息思想就是隔离,打包装箱,每个箱子都是隔离的!
(水果)(生化武器)
Docker通过隔离机制,可以将服务器利用到极致!
本质:所有的技术都是因为出现了一些问题,我们学要去解决,才去学习的!
2、Docker的历史
2010年几个搞IT的年轻人,在美国成立了一家公司dotcloud
做一些pass的云计算服务!LXC有关的容器技术!
他们将自己的技术(容器化技术)命名为Docker
Docker刚刚诞生的时候,没有引起行业的注意,活不下去了
所以决定开源(开放源代码OpenSource)
2013年,Docker开源
越老越多的人发现了Docker的优点,火了,每个月更新一个版本!
2014年4月9日,Docker1.0发布!
Docker为什么这么火?----十分轻巧!
在容器技术出来之前,我们都是使用虚拟机技术(VM)
虚拟机:在windows中安装一个虚拟机软件(Vmware),通过这个虚拟机软件虚拟出来一个或多个电脑,笨重!
虚拟机也属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!
vm: linux centos原生镜像(一个电脑)隔离,需要开启多个虚拟机!几GB,启动需要几分钟
docker: 隔离,镜像(最核心的环境4m+jdk+mysql)十分轻巧,运行镜像就可以了,小巧,几MB,秒级启动
到现在所有开发人员都需要掌握Docker
Docker是基于Go语言开发的,开源的;
3、Docker能干什么
之前的虚拟机技术
虚拟机技术的缺点
1、资源占用十分多
2、冗余步骤非常多
3、启动很慢
容器化技术
容器化技术不是模拟一个完整的操作系统
比较Docker与虚拟机技术的不同:
-
传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
-
容器内的应用直接运行在宿主机的内核中,容器没有自己的内核,也没有虚拟我们的硬件,所以非常轻便。
-
每个容器间是互相隔离的,每个容器内都有自己的文件系统,互不影响。
DevOps(开发、运维)
更快速地交付和部署
传统:一堆帮助文档,安装程序
Docker:打包镜像,发布测试,一键运行
更便捷的升级和扩缩容
使用了Docker之后,我们部署应用就和搭积木一样
项目打包成一个镜像,便于扩展。eg:当一个服务器运行到瓶颈之后,在另一个服务器只需要运行镜像即可
更简单的系统运维
容器化之后,我们的开发环境、测试环境都是高度一致的
更高效的计算资源利用
Docker是内核级别的虚拟化,他可以在一个物理机上运行很多的容器实例,服务器性能可以被使用到极致。
只要学不死就往死里学