• 【docker】Docker镜像管理


    一、Docker 概述

    Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
    Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
    Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

    Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
    鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

    Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
    即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

    二、容器的特点

    容器化越来越受欢迎,因为容器是:

    ●灵活:即使是最复杂的应用也可以集装箱化。
    ●轻量级:容器利用并共享主机内核。
    ●可互换:可以即时部署更新和升级。
    ●便携式:可以在本地构建,部署到云,并在任何地方运行。
    ●可扩展:可以增加并自动分发容器副本。
    ●可堆叠:可以垂直和即时堆叠服务。

    容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
    虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

    三、Docker与虚拟机的区别

    特性Docker容器虚拟机
    启动速度    秒级分钟级
    计算能力损耗 几乎无 损耗 50%左右
    性能    接近原生    弱于
    系统支持量(单机)    上千个几十个
    隔离性资源隔离/限制完全隔离

    四、namespace

    容器在内核中支持2种重要技术:
    docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。

    namespace的六项隔离:

    namespace系统调用参数隔离内容
    UTS CLONE_NEWUTS   主机名与域名
    IPCCLONE_NEWWIPC    信号量、消息队列和共享内存
    PID  CLONE_NEWPID 进程编号   
    NETWORKCLONE_NEWNET网络设备、网络栈、端口等  
    MOUNTCLONE_NEWNS  挂载点(文件系统)
    USER CLONE_NEWUSER用户和用户组(3.8以后的内核才支持)
     

    五、Docker核心概念

    镜像   image

    Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
    通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
    Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

    容器  container

    Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
    可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

    仓库 repoistory        

    Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

    Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 

    六、实验-安装Docker

    目前 Docker 只能支持 64 位系统。

    systemctl stop firewalld.service
    setenforce 0

    关闭防火墙和安全机制

    安装依赖包

    yum install -y yum-utils device-mapper-persistent-data lvm2 

    --------------------------------------------------------------------------------------------
    yum-utils:提供了 yum-config-manager 工具。
    device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
    device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
    --------------------------------------------------------------------------------------------

    设置阿里云镜像源

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

    安装 Docker-CE并设置为开机自动启动

    yum install -y docker-ce docker-ce-cli containerd.io
    docker-ce-20.10.18

    systemctl start docker.service
    systemctl enable docker.service

    --------------------------------------------------------------------------------------------
    安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
    --------------------------------------------------------------------------------------------

    查看 docker 版本信息

    docker version

    docker 信息查看

    docker info  
    Client:
     Context:    default
     Debug Mode: false
     Plugins:
      app: Docker App (Docker Inc., v0.9.1-beta3)
      buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

    Server:
     Containers: 0                        # 容器数量
      Running: 0
      Paused: 0
      Stopped: 0
     Images: 1                            # 镜像数量
     Server Version: 20.10.3            # server 版本
     Storage Driver: overlay2            # docker 使用的是 overlay2 文件驱动
      Backing Filesystem: xfs            # 宿主机上的底层文件系统

      Supports d_type: true
      Native Overlay Diff: true
     Logging Driver: json-file
     Cgroup Driver: cgroupfs            # Cgroups 驱动
     Cgroup Version: 1
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
     runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
     init version: de40ad0
     Security Options:
      seccomp
       Profile: default
     Kernel Version: 3.10.0-693.el7.x86_64        # 宿主机的相关信息
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 1
     Total Memory: 976.3MiB
     Name: localhost.localdomain
     ID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDT
     Docker Root Dir: /var/lib/docker            # docker 数据存储目录
     Debug Mode: false
     Registry: https://index.docker.io/v1/        # registry 地址
     Labels:
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Registry Mirrors:                            # 加速站点
      https://6ijb8ubo.mirror.aliyuncs.com/
     Live Restore Enabled: false

  • 相关阅读:
    竞赛选题 基于深度学习的人脸专注度检测计算系统 - opencv python cnn
    【7-创建商城系统的子模块并将修改后的信息使用Git提交到Gitee上】
    Future、FutureTask类解析
    ARM架构 --- MMU与协处理器CP15
    LeetCode Cookbook 数组习题(4)
    c/c++指针从浅入深介绍——基于数据内存分配的理解(上)
    c++ set、map的四种自定义排序方法
    98 验证二叉搜索树
    YOLOv8-seg改进:SEAM、MultiSEAM分割物与物相互遮挡、分割小目标性能
    1359:围成面积
  • 原文地址:https://blog.csdn.net/manyulanlanlu/article/details/133294304