Docker镜像的原理

作者: 羋学僧 | 来源:发表于2022-07-19 14:31 被阅读0次

    Docker运行的整个生命周期

    Docker使用多种操作系统的发行版

    1. 一个完整的操作系统,是由linux内核+发行版,组成的一个可以使用的完整操作系统。
    2. 利用docker容器,可以获不同的发行版镜像,然后基于该镜像,运行出各种容器去使用。

    查看操作系统的两大组成

    # 查看操作系统的发行版
    cat /etc/redhat-release 
    
    CentOS Linux release 7.9.2009 (Core)
    
    # 查看操作系统内核
    uname -r
    
    4.19.12-1.el7.elrepo.x86_64
    

    使用docker,来切换不同的发行版,内核都是使用宿主机的内核

    # 利用docker获取不同的发行版镜像
    docker pull ubuntu
    docker pull centos:7.8.2003
    
    # 确认当前宿主机的发行版本
    cat /etc/redhat-release 
    CentOS Linux release 7.9.2009 (Core)
    
    # 查看本地的docker镜像有哪些
    docker images
    # REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
    # nginx        latest     4cdc5dd7eaad   32 hours ago    133MB
    # redis        latest     08502081bff6   2 weeks ago     105MB
    # ubuntu       latest     9873176a8ff5   2 weeks ago     72.7MB
    # centos       7.8.2003   afb6fca791e0   14 months ago   203MB
    
    # 运行centos7.8.2003发行版
    # 运行容器,且进入容器内
    # 参数 解释 -i(交互式命令操作) -t(开启一个终端) bash(进入容器后执行的命令)
    docker run -it afb6fca791e0 bash
    # 查看容器内centos的发行版本
    [root@e332fe985eac /]#  cat /etc/redhat-release
    CentOS Linux release 7.8.2003 (Core)
    
    # 退出当前的容器空间
    exit
    
    # 查看虚拟机的操作系统内核
    uname -r
    4.19.12-1.el7.elrepo.x86_64
    
    # 进入ubuntu系统
    docker run -it ubuntu bash
    
    # 查看容器内ubuntu的发行版本
    root@5ea99c3a44f1:/# cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=22.04
    DISTRIB_CODENAME=jammy
    DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"
    
    # 查看ubuntu的操作系统内核(公用宿主机内核)
    root@5ea99c3a44f1:/# uname -r
    4.19.12-1.el7.elrepo.x86_64
    

    Docker部署服务的优势

    Docker镜像原理

    Docker镜像 分层原理
    # 进入正在运行的容器内
    docker exec -it 18c7f9820954 bash
    
    # 查看nginx运行使用的基础镜像
    root@18c7f9820954:/# cat /etc/os-release
    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
    NAME="Debian GNU/Linux"
    VERSION_ID="11"
    VERSION="11 (bullseye)"
    VERSION_CODENAME=bullseye
    ID=debian
    HOME_URL="https://www.debian.org/"
    SUPPORT_URL="https://www.debian.org/support"
    BUG_REPORT_URL="https://bugs.debian.org/"
    

    Docker镜像 写时复制原理

    镜像分层的一大好处就是共享资源,例如有多个镜像都来自于同一个base(基础)镜像,那么docker host只需要存储一份base镜像。

    • 内存里也只需要加载一份host,即可为多个容器服务。
    • 即使多个容器共享一个base镜像,某个容器修改了base镜像的内容,例如修改/etc/下的配置文件,其他容器的/etc/下内容是不会被修改的,修改动作只限制在单个容器内,这就是容器写时复制特性(Copy On Write),如下所示。


    相关文章

      网友评论

        本文标题:Docker镜像的原理

        本文链接:https://www.haomeiwen.com/subject/blzjirtx.html