Docker学习
1.doker概述
2.doker安装
3.doker命令
镜像命令
容器命令
操作命令
........
4.doker镜像
5.容器数据卷
6.Dockerfile
7.Docker网络原理
8.IDEA整合Docker
9.集群,docker compose(集群管理)
10.docker swarm(简化版的k8s)
11.CI\CD Jenkins
一.Docker概述
1.Docker为什么出现
(1)一个产品:开发-上线,两套环境,应用环境,应用配置(端口等等)
开发人员,运维人员
开发即运维
环境配置十分的麻烦,每个机器都需要部署集群(redis集群,ES集群,Hadoop。。。)非常费力。
比如现在我们需要发布一个项目,以前配置环境,发布一个jar,var包,,现在的话这个jar包需要(redis,MYsql,jdk ES环境)。
现在我们项目可不可以直接带着这个配置环境一起发布(jar+(jdk,redis,mysql)),这个就是doker的作用
传统:开发jar,运维来做
现在:开发打包部署上线,一套流程做完。
java---apk---发布(应用商店)---张三只用下载这个apk就能使用
java-jar(环境)---打包项目带上环境(镜像)(类比window)---docker仓库(商店)---直接运行即可
跑了一个JRE--多个应用--端口冲突---原来是交叉
隔离:docker核心思想,打包装箱,每个箱子是相互隔离的(通过镜像)
docker通过隔离机制,将我们的服务器利用到极致
Docker历史
docker相比较与虚拟机更轻巧
在容器出来之前,用的都是虚拟机
虚拟机:在windows中装vmware,通过一个虚拟机进行一台或者多台,笨重
虚拟机是一种虚拟技术,docker容器技术也是一种虚拟技术!
VM:Linux Centos原生镜像(一个电脑),隔离,需要开启多个虚拟机,几分钟,几个G
Docker:隔离,镜像(最核心的环境jdk,mysql),十分的轻巧,运行镜像即可,几秒,几M
Docker是基于go语言开发,开源项目
2.Docker能干什么?
之前的虚拟机技术:传统是内核(操作系统)+环境(自行下载)+应用app
缺点:
1.资源占用十分多
2.冗余资源多
3.启动很慢
容器化技术:并不是完整的系统,只是保有内核,通过容器(环境+应用)
DevOps(开发、运维)
应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker:打包镜像发布测试,一键运行
更便捷的升级和扩缩容
使用Docker之后,更像搭积木一样,比如现在这个项目,有spring boot,redis5 ,tomcat 8,之前需要一个个升级,而通过docker,直接打包为一个镜像
更简单的系统运维
通过容器化之后,我们的开发,测试环境都是高度一致。
更高效的计算资源利用:
Docker是一个内核级别的虚拟化,可以在我们物理机上运行多个容器实力,服务器性能能被压榨到极致