• docker系统化学习图文教程


    1.背景

    在实际开发中我们经常遇到这样的情况:

    1.开发的时候测试好的程序已发布到线上就出问题;

    2.线上的集群环境需要扩容时非常麻烦,比如说要装jdk、mysql、redis等,如果扩容100台服务器,简直是要崩溃的感觉;

    那么有没有这样一个工具,直接把我线下的环境(代码+运行环境)直接打包到线上运行,这样就避免了环境不一样和安装环境麻烦的事情,因此docker就挺身而出,来解决这个棘手的问题。

    2.简介

    docker官方网站:https://www.docker.com

    源码:https://github.com/docker/docker-ce

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源;

    Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上;

    Docker也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

    Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

    参考文献百度百科:https://baike.baidu.com/item/docker/13344470

    更多的介绍可以参看官方网站

    重要理念:一次封装处处运行,程序即应用

    3.docker架构

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

    Docker 容器通过 Docker 镜像来创建。

    几个重要概念:

    1.镜像:Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

    2.容器:容器是独立运行的一个或一组应用,是镜像运行时的实体。

    3.仓库:仓库可看成一个代码控制中心,用来保存镜像,作用类似于之前的maven仓库。

     官方文档的详细介绍:https://docs.docker.com/get-started/overview/

    容器与镜像的关系类似于面向对象编程中的对象与类。

    4.docker安装

    4.1.安装环境

    
    

    CentOS Docker 安装
    Docker支持以下的CentOS版本:
    CentOS 7 (64-bit),要求系统为64位、系统内核版本为 3.10 以上。
    CentOS 6.5 (64-bit) 或更高的版本,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

    区别:除了启动方式有一点点不一样,其他几乎都一样的,不用担心,可以根据自己的环境选择一种安装。

    centos6的安装

    https://www.cnblogs.com/newAndHui/p/13508784.html

    centos7的安装

    https://www.cnblogs.com/newAndHui/p/13508221.html

     4.2.运行hello-world 镜像,并理解docker运行原理

    执行:docker run hello-world

     运行: docker run hello-world 原理

    我们再次看到这幅图,也表示他的重要性,其实原理很简单,就是典型的“缓存思想”:

    1.客户端发出 docker run hello-world 命令

    2.服务端收到命令后,查看本机是否有hello-world这个镜像

      2.1.如果有这个镜像,就直接实例化为hello-world容器,即镜像实例化为容器;

      2.2.如果没有这个镜像,那么就要去镜像仓库拉取hello-world镜像,然后在执行2.1.的步骤

      2.3.如果拉取这镜像失败,镜像仓库没有这个镜像,那么就要报错。

    大家可以结合着这幅图理解:

    先理解什么是:docker 客户端,docker 服务端,镜像仓库

    在理解什么是:镜像,容器

    最后理解:这些关系

     docker的工作原理

    1.Docker是一个Client-Server结构的系统;

    2.Docker守护进程(daemon)运行在主机上, 然后通过Socket连接从客户端访问;

    3.守护进程从客户端接受命令并管理(对容器进行CRUD)运行在主机上的容器。

    面试题:

    docker与虚拟机的区别

     vm虚拟机:

    server - 表示真实电脑。
    Host OS - 真实电脑的操作系统,例如:Windows,Linux
    Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox
    Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux
    App - 虚拟机操作系统上的应用,例如nginx

    docker容器:

    server - 表示真实电脑。
    Host OS - 真实电脑的操作系统,例如:Windows,Linux
    Docker Engine - 新一代虚拟化技术,不需要包含单独的操作系统。
    App - 所有的应用程序现在都作为Docker容器运行。

    区别描述:

    1.docker有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。

    2.docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。

    为了避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。

    而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。

    系统化学习docker教程:

    https://www.cnblogs.com/newAndHui/p/13508771.html

    完美!

  • 相关阅读:
    C# Volatile
    C#索引器
    04Prism WPF 入门实战 Module
    No module named '_bz2'
    pandas day01
    实例讲解虚拟机3种网络模式(桥接、nat、Hostonly)
    asp.net 截屏 截取web页面
    c# winform 截图 网页
    delphi AddObject 用法
    DBGrid 更变数据内容显示
  • 原文地址:https://www.cnblogs.com/newAndHui/p/13398285.html
Copyright © 2020-2023  润新知