• 初步了解 docker


    docker 的作用

    docker 解决了以下问题:

    • 多台机器需要配相同环境、设置、应用
    • 比如在双11流量非常多的时候,某些大型公司要求10分钟内扩容1000台机器
    • 开发可以跑,程序传给测试就不能跑了,类似这种由于环境不一致造成的各种问题

    如何解决这些问题

    我们可能会想到,如果每台机器所运行的环境一致就不会出现开发可以跑,测试跑不了的问题了。我们可以将所有的配置信息、用到了什么服务都传到另外一台机器上。而这些配置信息、服务信息就叫环境

    程序是要在服务器上运行的,服务器是专门用来提供服务的电脑,我们可以写一个软件,这个软件用于传输环境,并且程序可以在这个软件中跑起来,这样就不需要配置电脑环境了

    这个软件为了解决快速扩容的问题,还需要写的非常轻量,多态机器同时快速配置,需要启动简单、方便

    容器

    容器就是上面介绍的内容的具体实现,它将软件打包成标准化单元,以用于开发、交付和部署

    • 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置
    • 容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行
    • 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突

    安装 docker 软件

    像普通的软件一样安装docker就行了,不过官方为了能快速大量的配置 docker 提供了安装脚本,一般的java程序都跑在Linux下,所以最好在Linux下安装docker

    curl -fsSL get.docker.com -o get-docker.sh
    sh get-docker.sh --mirror Aliyun
    # 启动服务
    systemctl start docker
    # 在这个容器中安装MySQL
    docker pull MySQL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在输入命令之前请先关闭防火墙,以我之前学习Linux的经验而言防火墙这东西除了给我带来困惑以外也没有什么其他能力了

    在输入命令之前切换到管理员用户

    docker 主要概念

    镜像:就是一个只读的模板,镜像可以用来创建 Docker 容器,一个镜像可以创建多个容器,类比与 java 的类

    容器:是用镜像创建的运行实例,Docker 利用容器独立运行一个或一组应用。它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台。 可以把容器看作是一个简易的 Linux 环境和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的,类比与 java 中由类生成的对象

    仓库:是集中存放镜像文件的场所。仓库和仓库注册服务器是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签。 仓库分为公开仓库和私有仓库两种形式,最大的公开仓库是 DockerHub,存放了数量庞大的镜像供用户下载,国内的公开仓库有阿里云、网易云

    docker 在接受到用户请求添加环境的时候,会先在本地仓库找有没有用户需要的东西,也就是在 docker 的机器上寻找有没有所需环境,如果没找到,才会去远程仓库中下载

    容器与虚拟机

    容器与虚拟机都可以跑程序,那它们有什么区别呢

    容器是一个应用层抽象,用于将代码和依赖资源打包在一起。 多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行 。与虚拟机相比, 容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动

    虚拟机 (VM) 是一个物理硬件层抽象,用于将一台服务器变成多台服务器。 管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源,因此 占用大量空间 。而且 VM 启动也十分缓慢

  • 相关阅读:
    提高广播新闻自动语音识别模型的准确性
    准备后端接口服务环境
    【元宇宙】区块链,元宇宙最大化的驱动力
    Kotlin当中的小技巧
    代码随想录算法训练营第五天| 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
    定制化精准推送与用户分组策略:数智营销的硬技能
    Docker简介
    智能合约平台开发指南
    [pytorch]手动构建一个神经网络并且训练
    python学习笔记:python类和对象,文件操作,网络编程
  • 原文地址:https://blog.csdn.net/sekever/article/details/126491595