zoukankan      html  css  js  c++  java
  • docker流程

    Docker概述

    docker出现

    开发代码 --- 上线代码

    问题:

    • 开发环境可以运行,部署到线上环境出现他各种错误
    • 版本更新,服务不能用了

    环境配置十分麻烦,每一台机器都要部署环境(集群redis,ES, Hadoop)

    发布一个项目j ar + (Redis Mysql jdk ES), 项目能不能带上环境安装打包

    之前在服务器配置一个应用的环境 Redis,MYSQL, JDK ES Hadoop,配置麻烦, 不能跨平台

    windows 最后发布到linux

    传统: 开发提供jar包,其他的运维做

    现在:开发打包部署上线,一套流程做完


    Docker给以上的问题提出了解决方案

    开发:Java --- jar + 环境 --- 打包成docker镜像. --- 发送到docker仓库

    运维:从镜像仓库下载镜像并运维, 直接用


    镜像仓库理解为应用商店

    java - apk -发布到应用商店

    安卓客户端-- 从应用商店下载 - 本地运行 -- 直接使用

    JRE --- 多个应用 (比如说都是8088端口,产生了端口冲突)

    ---》使用docker将项目代码以及依赖的的环境打包成docker镜像然后在服务器上运行


    docker历史

    2013 docker 开源

    2014.4.9。docker 1.0 发布


    虚拟机

    在windows中装一个vmware, 通过这个软件我们可以虚拟出来一台或多台电脑(硬件+软件)

    虚拟机属于虚拟化技术, docker是容器技术,也是虚拟化技术的一种

    vm, linux centos原生镜像。 隔离,需要开启多个虚拟机, 几个G,启动速度分钟级
    docker, 隔离, 镜像(最核心的环境4m+jdk+mysql)小巧,几M,启动速度秒级
    

    docker基于Go语言开发,2013年开源项目

    https://www.docker.com/

    https://docs.docker.com/

    https://hub.docker.com/


    docker能干嘛

    虚拟机技术缺点

    资源占用多

    冗余步骤多

    启动慢


    容器化技术不是模拟的完整的一个系统

    比较docker和虚拟机技术的不同:

    • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
    • 容器内的应用直接运行在宿主机的内核,容器内是没有内核的,也没有虚拟硬件,所以轻便了
    • 每个容器是相互隔离,每个容器内都有一个属于自己的文件系统,互不影响

    ​ DevOps(开发,运维)

    应用快速的交付和部署

    传统:一堆帮助文档,安装程序

    Docker: 打包发布测试,一键运行

    更便捷的升级和扩容

    使用了docker以后, 升级只需要更新镜像

    Springboot 1.5 Redis 5 tomcat8

    项目打包一个镜像,扩展服务器A. 服务器B

    更简单的系统运维

    容器化后,开发,测试环境高度一致

    更高效的计算资源利用

    Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例,服务器的性能可以被压榨到极致


    Docker安装

    docker的名词解释

    镜像(image):

    docker镜像就好比是一个模版,可以通过这个模版来创建容器服务, tomcat镜像》run=>tomcat容器(提供服务器),

    通过这个镜像可恶意创建多个容器(最终服务运行或者项目运行就是在容器中)

    容器(container):

    Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建

    启动,停止,删除,基本命令

    目前就可以把这个容器理解就是一个简易的linux系统

    仓库(repository):

    仓库就是存放镜像的地方

    仓库分为公有仓库和私有仓库

    Docker Hub(默认是国外的)

    阿里云。。都有容器服务器(配置镜像加速!)


    环境准备

    # uname -r
    3.10.0-1160.11.1.el7.x86_64
    # cat /etc/os-release 
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="7"
    

    文档:https://docs.docker.com/engine/install/centos/

    第一步:卸载docker

    yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    

    第二步:需要的安装包

    yum install -y yum-utils
    

    第三步:设置镜像的仓库

    yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    
  • 相关阅读:
    大数据并发控制思考
    同步和异步的区别
    java枚举使用详解
    利用反射实现动态方法调用
    利用反射查看类的声明信息
    用两个栈实现对列
    c标签 if else c标签 总结
    struts2标签获取parameter,request,session,application中的值
    mysql日期加减
    详细介绍Java中的堆、栈和常量池
  • 原文地址:https://www.cnblogs.com/cjwnb/p/14662263.html
Copyright © 2011-2022 走看看