docker简单介绍。

 docker是啥?
 
一、概念?
//         和运维有关的工具,和开发没有很大的关系。只需要去调试项目,将项目运行更迅速。
    
二、作用?
    1.只需要关心项目的编写和调试,不需要关心具体的项目需要运行在哪里,并且项目部署是非常安全的。
    2.构建非常安全,并且部署和运行项目可以在任意的地方。
    
    docker英文翻译过来是码头工人,码头工人在码头进行搬运,doker的整个核心就是集装箱,目的就是把所有的码头工人全部下岗

    
    
理解。
        当运维和开发人员出现分歧和冲突的时候,千万不要吵架,要一起寻找问题的解决方案:
        1.把开发的所有详细的版本号以及工具所对应的版本信息全部列出一个清单供运维使用
            需要写一个非常大的文档,但是一般开发工作人员不擅长写文档
        2.运维会告诉开发人员,你能不能把电脑上的整个全部配置好的环境给我复制一份,然后我把你的环境全部粘贴到服务器上
/*        
            这种技术就叫做docker
            
            在一个服务器中  建立各种隔离。 将东西区分存放。这就是docker。
    
*/
三、核心?
    //    集装箱。一个集装箱,搞定所有的物品。
    
1.镜像
    1.1 ISO(/* 使用代码做的系统。*/)文件, 不可被改动。所有的镜像文件 只能读。
    1.2 操作  
        下载centos镜像 
        创建虚拟机
        删除镜像,不影响系统的正常运行。这个系统称之为容器。
        通过容器,制作镜像。
    
2.容器

3.仓库



四、docker在项目中的作用?
    一个项目上线。--------》服务器。
    -------大项目---------
    上层框架使用bootstrap
    调用项目的接口controller
    中间件  PHP
    爬虫 Python 
    Redis  nginx ftp dubbo zookeeper mycat
    
    配置 jdk PHP  Python 各种环境。
    
//    在一个服务器中  建立各种隔离。 将东西区分存放。这就是docker。    
    
    
五、docker的优秀之处?    

/*
1.优秀?
    把所需要部署的项目和环境分别 放在不同的集装箱里面。
    
    把,项目根据不同的类型进行拆分。
    把,拆分的每一块放在的集装箱,每一个集装箱之间互不影响。
        就不存在跨域!!! 优秀!!!
    

    docker 虚拟化的玩意。
        在一个Linux中安装 docker 
    
    
    都放在一个集装箱里面,抗的住么?
    
2.更秀的地方?

        内存<=512k
        硬盘<=170M  docker做一个Linux的基础系统只需要170M
        


*/

六、 docker和虚拟机?
1.虚拟机?
        是一种虚拟化的技术
        当虚拟机从安装完毕到启动需要很久,而且启动的时候需要加载大量文件(有可能linux用不到),log文件,配置,环境这些可能linux用不到,但是依然需要加载
        在集群模式中,需要大量的虚拟机(3台)
        第一台虚拟机/etc/全部启动
        第二台虚拟机/etc/全部启动
        第三台虚拟机/etc/全部启动
        相当于加载了三次,也就是说三个linux虚拟机中每一个etc文件夹都是相同的,于是就必须加载这些冗余(三次)的配置文件
        虚拟机所存放的位置(硬盘)会越来越大(每一台linux都有自己的配置文件,每一个配置文件都是相同的)

2.另一种虚拟化的技术诞生了(LXC:Linux Container):称之为linux容器
    //这种技术就是docker
    
        把所需要的配置的集群,装在一个容器中,
        把相同的所有的配置全部封装抽取起来,所有的Linux集群共用一个配置,
    //    解决冗余的问题。
    
    
    linux虚拟机需要把无论能否用到的所有配置全部加载一遍
        
    
    
        
    按需求加载?    //减少内存
        doctor把 所需要的配置文件加载进来,不需要的暂时不要加载,当Linux使用到
        这些没有加载的文件的时候,再进行加载。
    
    分类存储?  //减少硬盘
        把Linux中配置按照不同的种类进行规划
        
        启动类  1 就只放和Linux 启动相关的文件。
        
        配置类
        冗余类
        日志类
    


    

二、docker的三大核心?

docker的三大核心
    4.1.镜像
        称之为iso文件(使用代码所做的系统),是不允许被改动的,也就是说一旦镜像只做完毕后是一个只读的状态
        对镜像的操作:
            4.1.1.从linux官网中下载centos镜像(是linux公司所制作完成以后的镜像)
            4.1.2.把镜像放在vmware中创建一个linux虚拟机(centos6.9)
            4.1.3.删除镜像文件是不影响系统正常运行的,那么这个系统就称之为容器
            4.1.4.还可以通过容器制作镜像
            
    4.2.!!容器!!
        其实容器就是通过镜像所创建出来的系统
        通过vmware加载ISO文件-->形成一个linux系统,这个系统就称之为这个ISO镜像文件的容器
        容器其实就当相遇一个linux系统,所有的命令行操作以及增删改查和各种框架配置都需要在容器中完成
        其实最终程序员所操作的就是容器
        4.2.1.根据镜像创建出一个容器
        4.2.2.启动容器
        4.2.3.删除容器
        4.2.4.在容器中做各种操作(ll命令,tar -zxvf命令,启动tomcat,配置redis....)
        4.2.5.根据容器创建镜像
/*        
        思考问题:
            当tomcat镜像(相当于官网所提供的的tomcat压缩包)创建了容器后(也就是说当tomcat压缩包解压出了一个tomcat文件夹之后),相当于在linux中已经把tomcat部署完毕了,在docker的tomcat容器中部署了一个web项目(web项目有一个图片上传功能),为了做负载均衡,把web项目部署在5个docker的tomcat上面(通过tomcat的镜像创建了5个容器),当tomcat重新启动的时候图片丢失了
            如何解决问题?
                部署一个ftp服务器,把所有的图片全部存入到ftp服务器上,使用的时候直接进行访问即可
            思考问题:
                项目非常老旧,根本无法做扩展FTP(spring,strut1,higerbate,DWR....),如何解决?
                在docker所依托的linux服务器上创建一个upload文件夹(会永久的保存在linux硬盘中)
                然后把docker中的tomcat中的upload文件夹和linux系统中upload文件夹做数据共享
        --数据卷
            把容器中所需要持久化的数据保存在本机硬盘中,这个硬盘就称之为容器的数据卷
            数据共享
*/
    镜像和容器的关系:
        在官方文档中介绍,首先先有的是容器再有的镜像(linux公司首次开发linux系统的时候,必须先研究整个linux系统,linux系统没有bug以后实现真实上线(稳定版上线)-->生成镜像供用户所使用)
        用户使用容器的时候就必须要有镜像
            eg:
                在vmware虚拟机中运行一个linux系统(原生的linux系统),但是这个系统必须要通过ISO镜像文件进行创建
                把redis部署完毕以后然后生成一个ISO镜像文件--->运维拿到这个iso直接运行会得到linux服务器(已经包含了redis)
        镜像和容器只是相对的,可以通过镜像生成容器,也可以通过容器生成镜像


    4.3.仓库

数据卷?

原文地址:https://www.cnblogs.com/ZXF6/p/11572070.html