课程名称:多端全栈项目实战,大型商业级代驾业务全流程落地
课程章节:第二章
主讲老师:神思者
看了两章内容 但觉得得把知识点整理下 不然总感觉过两天就忘
课程内容:
1. docker
课程收获:
1. 在centOS 系统 先安装 docker环境,然后再docker 里面部署各种数据库和中间件程序,
1.节省时间
2.避免程序间冲突
例子:
当你想要再linux系统上搭建mysql集群,想在linux上同时运行多个mysql,你要做很多事情,例如定义
很多得配置文件和目录,要写复杂得启动脚本,每个mysql节点海牙单独执行初始化,有了docker 只需要运行
几条命令,mysql节点就创建好了,特别节省时间,而且docker隔离性做的好,不用担心 mysql 节点冲突,
当项目开始变多,去年开发得java项目 jdk1.8、mariaDB ,已经部署再linux项目。今年开发得项目用的时jdk15和mysql 现在要把这个项目也部署再同一个linux系统上就比较难,因为两个项目得sql程序包有冲突,linux系统只能安装一个数据库。还有两个jdk 要怎么给系统装环境变量,所以引入docker是一个更好得选择
2.docker 原理
往简单了说,Docker是个沙箱环境。你可以创建很多个沙箱空间,然后在每个沙箱中部署不同的程序。比如沙箱A里面部署MySQL,沙箱B中部署MariaDB。沙箱之间是物理隔绝的,只有网络可以联通,所以MariaDB和MySQL程序包的冲突,在Docker中完全体现不出来
因为Docker环境给每个沙箱都创建了虚拟网卡,所以每个沙箱都有自己的内网IP地址,沙箱之间可以通过网络相互调用,这就能搭建数据库集群或者部署项目了。沙箱的内网IP在Docker环境之外是无法访问的,所以等我们创建沙箱的时候,需要把沙箱的某个端口映射到Linux系统的某个端口,这样在Docker之外才能用网络访问Docker容器里面的程序。
镜像和容器
Docker为了最大化的共享资源,减少资源浪费,创造出了镜像技术。镜像是沙箱之间相同的部分,差异化的部分叫做容器。比如说一个Java镜像,里面安装了JDK1.8,然后我为这个镜像创建出2个容器,这两个容器共享使用JDK镜像中的Java环境,并且我可以在每个容器中部署不同的Java程序。如果Docker没有镜像技术,我们只能分别在两个容器中安装JDK环境,这就造成了不必要的重复浪费。
创建Docker镜像的方式有多种,比如说你把要安装的程序和脚本写成Dockerfile文件,然后执行特殊的命令,Docker就会按照你的要求创建出镜像。或者说你利用现有的容器,在里面安装程序写好脚本,然后把这个容器逆向创建出镜像也可以。甚至说你不想自己创建镜像,也可以去DockerHub网站上下载别人创建的镜像。比如MySQL镜像、HBase镜像、JDK镜像、Python镜像等等。你把镜像下载下来,导入Docker环境,然后创建容器就可以使用MySQL、HBase这些东西了,特别节省时间。
程序运行再容器中,性能是否有损失
Docker创建的沙箱是轻量级的,只给容器创建了虚拟网卡,所以对Linux系统开销非常小。在容器中运行程序跟在Linux同直接运行程序没有差别,性能也没有任何损失,所以你可以放心使用Docker环境。现实中,一台硬件服务器同时运行几百个容器也没有问题。即便2GB内存的低端云主机,运行十几个容器也能撑得下来。
docker 运行代码
service docker start service docker stop