• 云原生 | Docker - [简介、架构、安装、加速]


    §1 Docker 是什么

    • docker 是环境的容器
    • 允许应用连同它的依赖、环境等一起打包,并且可以将这个包放到其他环境上继续启动运行
    • 类似以前 windows 的 ghost 镜像,但这个镜像是专为跑应用而准备的,所以自带这个应用所需的环境、配置、依赖

    与虚拟机的区别如下图所示,相比于

    • docker 不需要虚拟硬件和操作系统,而是直接使用硬件资源
    • docker 是应用和环境的打包,虚拟机还需要加上一个虚拟操作系统内核
      在这里插入图片描述

    §2 架构

    §2.1 官网图

    在这里插入图片描述
    镜像、容器实例、仓库
    仓库 类似于 github,是存放镜像的地方
    仓库和 maven 仓库一样有公有和私有仓库之分
    最大的公有仓库是 hub.docker.com
    国内最常用的仓库是阿里云
    仓库里存放的都是镜像

    镜像 是对应用和其依赖、环境等配属物的容器
    镜像相当于一个模板,这个模板是一个文件
    镜像通常可以包含一个完整的文件系统
    镜像可以分层构建,并且不包含任何动态数据

    容器实例 是镜像的一个运行进程
    镜像运行后得到一个容器实例,所有容器都是通过镜像创建的
    一个镜像可以同时运行处多个容器实例

    §2.2 架构图

    在这里插入图片描述
    rootfs
    是一套精简的 linux 文件系统,docker 镜像的运行也是基于 linux 的,只不过是基于简化版 linux

    docker container
    docker 容器

    libcontainer(?)
    docker 的 rootfs 只是一套精简的 linux 文件系统,若容器需要linux的一些特性则通常需要依赖 libcontainer
    docker 通过 libcontainer 从 rootfs 上区分出不同的容器

    docker registry
    docker 仓库

    docker client
    docker 客户端,通常用来发出指令

    docker daemon
    docker 的守护进程,运行在主机上
    包括两个部分

    • docker server
      用于接受客户端的指令并进行 job 的调用
    • docker engine
      用于实际处理 docker job 的地方,若 job 执行过程中需要,会自动与仓库进行通信

    docker driver
    驱动,包括网络驱动、图形驱动等

    §2.3 UnionFS(联合文件系统)

    docker 镜像的文件系统是分层的,在下载镜像时可以看到相关现象
    在这里插入图片描述
    这是 docker 的 UnionFS,联合文件系统,以下是 UnionFS 自底而上的组成

    在这里插入图片描述

    • bootfs
      • bootloader
        最先加载,用于加载 kernel
      • kernel
        成功加载后,接过内存使用权并加载 rootfs
    • rootfs
      不同操作系统发行版的文件系统,相当于 centos 等
      rootfs 通常也作为基础镜像(base image)存在
    • 镜像层
      镜像层可以包括多个层次,按依赖关系顺次罗列,
      比如 jdk、mysql、app
      每追加一层,这一层之下的镜像都做完父镜像存在
    • 容器层
      通过镜像启动容器时,docker 会在最顶层添加一个可写的文件系统
      容器层以下,都是只读的

    §3 安装

    docker 的获取和安装可以参考 官网

    §3.1 前提

    linux 系统要求

    • CentOs 7 以上
    • 系统版本 64 位
    • linux 内核 3.8 以上

    通过下面指令查看

    cat /etc/redhat-release
    uname -r
    
    • 1
    • 2

    在这里插入图片描述

    卸载旧版本

    yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    安装 gcc

    yum -y install gcc
    
    • 1

    在这里插入图片描述
    yum -y install gcc-c++

    在这里插入图片描述

    §3.2 安装

    安装 yum-utils

    yum install -y yum-utils
    
    • 1

    在这里插入图片描述

    添加 stable 仓库

    yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    刷新 yum 缓存(可选)

    yum clean all
    yum makecache fast
    yum update
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    安装 docker

    yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    • 1

    如果安装失败,重新刷新 yum 缓存
    在这里插入图片描述

    §3.3 启动

    启动 docker 服务

    systemctl start docker
    
    • 1

    运行 hello world 验证启动

    docker run hello-world
    
    • 1

    在这里插入图片描述

    查看 docker 进程

    ps -ef |grep docker
    
    • 1

    在这里插入图片描述

    查看 docker 版本

    docker version
    
    • 1

    在这里插入图片描述

    §3.4 卸载

    停止 docker 服务

    system stop docker
    
    • 1

    从 yum 卸载

    yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    • 1

    删除 docker 的镜像、容器、卷和用户配置

    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    
    • 1
    • 2

    §4 镜像加速器

    获取加速器地址,以阿里云为例

    在这里插入图片描述
    在这里插入图片描述
    使用加速器地址,以阿里云为例

    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://2mkskfi4.mirror.aliyuncs.com"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    stm32_标准库_2
    Spring源码解析—— AOP代理的生成
    k8s 读书笔记 - kubernetes 基本概念和术语(下)
    简述Java21新特性
    μC/OS-II---计时器管理2(os_tmr.c)
    Three.js--》建模软件如何加载外部3D模型?
    linux命令详解之-find精确查找和高级使用
    华清远见上海中心22071班
    【LeetCode】150.逆波兰表达式求值
    如何用一颗芯片实现5V转正负12V
  • 原文地址:https://blog.csdn.net/ZEUS00456/article/details/126191885