0x01. docker学习路线
-
Docker概述
-
Docker安装
-
Docker命令
- 镜像命令
- 容器命令
- 操作命令
- ........
-
Docker镜像
-
容器数据卷
-
DockerFile
-
Docker网络原理
-
IDEA整合Docker
-
Docker Compose
-
Docker Swarm
-
CI\CD Jenkins
0x02. 什么是docker
Docker 是一个(基于go语言)开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,也就是说互不影响
0x03. 为什么要有docker
1. 产生的问题
假如说一款产品从开发到上线, 一般情况下都是两套环境。一个开发环境,一个生产环境。往往要将开发的应用部署到生产环境上的时候,如果环境复杂就会出现一个尴尬的事情,就是我在我的电脑上可以运行,运维人员部署到机房就不行。一般环境配置是一件相当麻烦的事情,费事又费力
发布一个项目 ( jar ) + ( redis mysql jdk es ) , 项目能不能都带上环境安装打包?
而且之前应用的环境还不能跨平台, 开发往往是在windows下开发, 但是部署的服务器都是LCX操作系统, 所以不支持跨平台
传统: jar + 运维
现在: 开发打包部署上线, 一套流程一个人就能干
2. 解决方案
Docker给以上问题提供了解决方案!
java --- apk --- 发布(应用商店) --- 张三使用apk --- 安装即可用
java --- jar(环境) --- 打包项目带上环境 ( 镜像/容器 ) --- (Docker仓库: 商店) --- 下载镜像 --- 直接运行
0x04. Docker历史
2010年, 几个搞IT的小伙子, 在美国成立了一家公司dotCloud
, 他们主要做一些pass的云计算服务!linux有关的容器技术, 然后他们将自己的技术( 容器化技术 ) 命名为Docker , 但是Docker刚刚诞生的时候 , 实际上并不是一出就火, 也没有引起行业的关注, 但是这个家公司还要经营下去。怎么办呢?
2013年, Docker的老板将Docker开源, 越来越多的人注意到Docker, 觉得这个玩意挺好用的, 然后就火了
开源以后, Docker几乎一个月更新一次, 说明这个社区十分的活跃, 2014年4月9日 , Docker1.0发布
Docker为什么这么火?十分的轻巧!
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机∶在window中装一个Vmware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!虚拟机也是属于
虚拟化技术,Docker容器技术,也是一种虚拟化技术!
vm : linux centos原生镜像(一个电脑!) 隔离,需要开启多个虚拟机! 十几个G 几分钟
docker : 隔离,镜像(最核心的环境4m + jdk + mysq1)十分的小巧,运行镜像就可以了! 小巧! 几个M KB
秒级启动!
0x05. Docker的使用
文档官网 : https://docs.docker.com/ 超级详细的
下载安装页面 : https://docs.docker.com/get-docker/
Docker的仓库地址: https://hub.docker.com/ 可以下载,发布docker镜像
0x06. docker能干什么
Docker的思想实际上就来源于logo中的集装箱 , 可以在一条船上累计多个集装箱, 每个之间互不影响
映射到我们计算机上就是使用Docker可以安装多个项目+环境, 每个之间相互不影响, 可以同时存在
Docker的核心思想 : 隔离
之前的虚拟化技术
虚拟技术的缺点:
- 资源占用多
- 冗余步骤多
- 启动很慢
容器化技术
容器化技术不是模拟的一个完整的操作系统
Docker和虚拟机的不同
- 传统的虚拟机, 虚拟出一套硬件, 运行一个完整的操作系统, 然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内核, 容器是没有自己的内核的, 也没有虚拟我们的硬件, 所以很快, 因为每个容器间是相互隔离的, 每个容器内都有一个属于自己的文件环境, 互不影响
DevOps ( 开发 运维 )
应用更快速的交付和部署
传统 : 一堆帮助文档,安装程序
Docker : 打包镜像发布测试,一键运行
更便捷的升级和扩缩容
使用了Docker之后,我们部署应用就和搭积木一样!
项目打包为一个镜像,扩展服务器A!服务器B
更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的。
更高效的计算资源利用
Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。