• 虚拟化+Docker基本管理


    一、虚拟化简介

    1、云端服务器都有哪些

    华为云、谷歌云、腾讯云、阿里云、亚马逊、百度云、移动云、天翼云、西部数码云等

    1.国内云

    华为云、阿里云、腾讯云、天翼云(私有云)

    2.国外云

    谷歌云、亚马逊

    2、云计算的服务模式

    云计算的服务模式是分层的

    IaaS:Infrastructure(基础设施)-as-a-Service

    PasS:Platform(平台)-as-a-Service

    SaaS:Software(软件)-as-a-Service

    基础设施即服务(IaaS, Infrastructure as a Service)
    定义:
    IaaS是云计算的基础层级,它向用户提供虚拟化的计算资源,如虚拟机、存储空间、网络和操作系统。用户可以根据需求租用这些基础设施,并对其进行配置和管理,但无需关心底层硬件的维护。
    应用场景:适用于需要高度定制化环境的企业,如运行特定应用、开发测试环境、数据备份和恢复等。
    平台即服务(PaaS, Platform as a Service)
    定义:
    PaaS为开发人员提供了一个完整的开发和部署环境,包括操作系统、数据库、中间件、编程框架等。用户可以在服务商提供的平台上直接开发、运行和管理应用程序,无需关心底层基础设施的细节。
    应用场景:适合软件开发团队,可以加速应用开发、简化运维工作,如Web应用、移动应用后端、大数据分析平台等。
    软件即服务(SaaS, Software as a Service)
    定义:
    SaaS是云计算服务的最高层级,直接向用户提供应用程序,用户通过互联网访问并使用这些应用,无需安装或维护软件。所有应用相关的后台管理、数据存储、安全更新等均由服务提供商负责。
    应用场景:广泛应用于日常办公、CRM、ERP、邮件服务、协作工具等领域,如Office 365、Salesforce、Google Workspace等。
            每种服务模式都代表了从基础设施到最终应用的不同层次的服务抽象,用户可以根据自身需求选择合适的服务模式,实现资源的灵活配置和高效利用,同时降低运营成本和提升业务敏捷性。
            目前中国使用最多的服务模式是 PaaS ,国外使用最多的是 SaaS。

    3、关于Docker产品

     Docker 是一个开源的应用容器引擎,它允许开发者将应用程序及其所有的依赖包打包成一个轻量级、可移植的容器(Container),然后可以在任何支持Docker的Linux或Windows操作系统机器上运行这个容器,实现应用程序的快速部署和一致性运行环境。Docker采用操作系统级别的虚拟化技术,相较于传统的虚拟机技术,它更为轻量级,启动速度快,资源利用率更高。

    1.虚拟化产品有哪些?

    1.服务器虚拟化产品
    • VMware vSphere:包括ESXi hypervisor和vCenter Server,提供企业级的虚拟化解决方案。
    • Microsoft Hyper-V:Windows Server内置的虚拟化平台,支持创建和管理虚拟机。
    • Xen:开源虚拟化技术,常用于Citrix XenServer和一些Linux发行版中。
    • KVM(Kernel-based Virtual Machine):基于Linux内核的开源虚拟化解决方案,广泛应用于云平台。
    2.桌面虚拟化产品
    • VMware Horizon:提供虚拟桌面基础架构(VDI)和应用程序虚拟化。
    • Citrix Virtual Apps and Desktops(原XenDesktop):支持交付虚拟应用和桌面到任何设备。
    • Microsoft Remote Desktop Services:允许用户远程访问Windows应用和桌面。
    3.存储虚拟化产品
    • VMware vSAN:软件定义的存储解决方案,直接在ESXi主机的本地存储上创建分布式存储层。
    • Microsoft Storage Spaces Direct:Windows Server中的存储虚拟化功能,支持使用直接附加存储创建存储池。
    • NetApp Data ONTAP:企业级存储虚拟化解决方案,支持数据管理和保护。
    4.网络虚拟化产品
    • VMware NSX:提供软件定义的网络和安全服务,支持网络虚拟化和微分段。
    • Cisco ACI(Application Centric Infrastructure):以应用为中心的网络架构,提供网络虚拟化和策略驱动的网络管理。
    • Open vSwitch(OVS):开源的虚拟交换机,常用于OpenStack等云平台的网络虚拟化。
    5.容器和轻量级虚拟化产品
    • Docker:容器化平台,用于应用程序的打包、分发和运行。
    • Kubernetes(K8s):容器编排系统,用于自动化容器化应用的部署、扩展和管理。
    • Linux Containers (LXC):基于操作系统级别的轻量级虚拟化技术,提供容器服务。

    2.虚拟机架构

    1.寄居架构

    虚拟机作为应用软件安装在操作系统上
    可以在此应用软件上安装多个操作系统
    直接安装在硬件上的系统为宿主

    本机(真实的操作系统)   ---->   虚拟化产品   ---->   虚拟化操作系统或软件

    虚拟机监视器:例如 VMware 
    VMware非常强大,真机可以上网,虚拟机也可以上网。
    病毒木马都可以拖到虚拟机运行,与真机脱离,非常安全。

    但是真机一旦崩了,虚拟机当然也崩了。所以实际生产环境用的是 源生架构

    2.源生架构

    虚拟机软件直接安装在计算机硬件上
    虚拟机本身就是一个操作系统
    在这个虚拟机中可以同时运行多个操作系统

    裸金属 服务器  --->  虚拟化产品

    3.虚拟化技术概述

    虚拟化技术允许在单一物理硬件上创建和运行多个独立的虚拟环境,核心分类包括仿真虚拟化、半虚拟化和全虚拟化,每种技术各有侧重:

    • 仿真虚拟化:无需硬件支持,兼容性强,能在不同架构间运行操作系统,但性能较低。
    • 半虚拟化:需修改客户系统以提升性能,直接与虚拟化层通信,适用于特定场景和注重性能的环境。
    • 全虚拟化:现代技术大多结合硬件辅助,以实现接近原生的性能,同时保持高度兼容性,适用于广泛场景。

    4.主流虚拟化产品对比

    1. VMware系列

    VMware Workstation: 面向个人用户的Windows或Linux上的虚拟机软件,适合开发、测试及多系统体验。
    VMware Fusion: 专为Mac设计的虚拟化软件,允许在Mac上运行Windows及其他操作系统。
    VMware ESXi & vSphere: 企业级裸金属虚拟化平台,直接安装在物理服务器上,提供高性能和集中管理能力。可通过客户端或网页端访问管理界面,网页端逐渐成为主流,便于远程管理和维护。

    之前用的是客户端连接  VMware vsphere
     现企业   使用 网页端连接 VMware vsphere

    2.KVM/OpenStack
    • KVM: 基于Linux内核的虚拟化技术,开源且强大,尤其适用于构建私有云环境。与OpenStack等云平台结合,提供全面的虚拟化解决方案,适合大规模部署和服务自动化。
    3.Xen
    • Xen Hypervisor: 是一个成熟的开源虚拟机监视器,特别是与RHEL(Red Hat Enterprise Linux)5紧密集成,支持半虚拟化和全虚拟化,适用于企业级服务器虚拟化场景。

    5. 其他半/全虚拟化产品

    • Hyper-V (微软): 微软开发的虚拟化平台,特别适合Windows环境,广泛应用于Windows Server,支持半虚拟化技术。
    • VirtualBox: 一款广受欢迎的免费虚拟机软件,适用于多种操作系统,支持全虚拟化,适合开发测试和教育用途。
    • Citrix Hypervisor: 前身为XenServer,专注于提供高效的服务器和桌面虚拟化解决方案,适用于企业环境,支持全虚拟化。

    ① KVM   全虚拟化产品    调用linux内核 来完成

    ② ESXI  (裸金属虚拟化)  企业用的特别多  除了云  就是它

    以下两个图解:

    二、Docker概述

    1、IT架构演变

    云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务、Serverless(无服务),无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。

    Bare Metal(裸金属):运行物理机,也称为裸金属
    Virual machines(虚拟机):可以在一台物理机上创建多个虚拟机,并把物理配置分发成多个虚拟配置
    缺点:性能损耗大,大约损耗50%
    虚拟机常用软件:VMware workstation(windows、vm Sphere+ESXI (Windows server)、KVM(linux内核))
    Containers(容器):容器内部自身有一个小型操作系统
    常用软件:docker、podman、rocket、container
    functions函数(函数化、代码化)

    2、什么是Docker

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

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

    3、Docker的设计宗旨

    Build,Ship and Run Any App,Anywhere,

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

    4、Docker的特点

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

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

    容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

    虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

    5、Docker与KVM(虚拟机)的区别

    1.隔离共享

    虚拟机通过添加Hypervisor层(虚拟化中间层),虚拟出网卡、内存、CPU等虚拟硬件,再在其上建立虚拟机,每个虚拟机都有自己的系统内核。而Docker容器则是通过隔离(namesapce)的方式,将文件系统、进程、设备、网络等资源进行隔离,再对权限、CPU资源等进行控制(cgroup),最终让容器之间互不影响,容器无法影响宿主机。

    容器与宿主机共享内核、文件系统、硬件等资源。

    2.性能与损耗

    与虚拟机相比,容器资源损耗要少。
    同样的宿主机下,能够建立容器的数量要比虚拟机多
    但是,虚拟机的安全性要比容器稍好,要从虚拟机攻破到宿主机或其他虚拟机,需要先攻破 Hypervisor层,这是极其困难的
    而docker容器与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机产生影响。

    不同点Docker容器虚拟机
    启动速度快,几秒钟慢,几分钟
    运行性能接近原生(直接在内核中运行)运行于Hypervisor上,50%左右损失
    磁盘占用小,甚至几十KB(根据镜像层的情况)非常大,上GB
    并发性一台宿主机可以启动成百上千个容器最多几十个虚拟机
    隔离性进程级别资源隔离/限制
    操作系统主要支持Linux主要支持Linux
    封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离

    6、namespace的六项隔离

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

    7、Docker有哪些优势?和虚拟化比有什么优势?

    把容器化技术做成了标准化平台

    docker引擎统一了基础设施环境——docker容器环境(引擎)
    docker引擎统一了程序打包(装箱)方式——docker镜像(把引擎放在镜像中,带着镜像到处跑)
    docker引擎统一了程序部署(运行)方式——docker容器(利用引擎把这个镜像再去运行为之前的相同的一模一样的容器了)
    镜像——》封装的一个时刻的服务/应用状态

    容器——》应用跑起来的状态(正常提供服务的状态 - 运行时)

    实现了一次构建,多次、多处使用。

    三、Docker核心概念

    1、镜像   容器  仓库

    镜像:包含了各种环境或者服务(tomcat redis nginx)的一个模板。运行容器的基础,包含运行应
    用程序所需的所有内容。

    容器:是镜像运行起来之后的一个实例,可以把容器看做是一个简易版的linux环境容器就是集装箱
    从镜像创建的叫做运行实例。

    仓库:存放镜像的场所,最大的公开库是docker。私有仓库harboor。

    2、Docker使用场景

    1.Docker在内核中支持2种重要技术

    docker 本质就是宿主机的一个进程,docker 通过namespace 实现资源隔离,通过==cgroups ==实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘。比如分配500G,并不是实际占用物理磁盘500g,而是随着使用扩展)

    2.应用场景

    打包应用部署简单、适合做微服务部署、适合持续集成和持续交付、提高开发效率、快速部署。

    1. 打包应用程序部署简单
    2. 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦)
    3. 例如:需要把服务器从腾讯云迁移到阿里云,如果采用的是 Docker容器技术,整个迁移的过程只需要在新的服务器上启动我们需要的容器就可以了。
    4. 适合做微服务的部署
    5. 适合持续集成和持续交付(CI/CD):开发到测试发布
    6. 部署微服务
    7. 提供PASS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker(K8S)属于PAAS}

    3、Docker架构

    1. Docker使用客户端-服务端(C/S)架构。Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。
    2. Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快。
    3. Docker daemon:守护进程
    4. Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象。例如图像、容器、网络和卷,守护程序还可以与其他守护程序通信以管理Docker服务。

    4、Docker工作流程

    1. 客户端发起各种各样的命令,给与主机
    2. 主机会调用镜像,如果有镜像直接用,运行为容器
    3. 如果镜像里没有会到registry公共仓库去拉去镜像,拉到本地后再运行为容器

    四、部署Docker

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

    部署环境

    1. systemctl stop firewalld.service
    2. setenforce 0

    1、安装依赖包

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

    2、设置阿里云镜像源

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

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

    1. yum install -y docker-ce docker-ce-cli containerd.io 安装最新版本
    2. docker-ce-20.10.18
    3. --------------------------------------------------------------------------------------------
    4. 安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。
    5. --------------------------------------------------------------------------------------------

    1. systemctl start docker.service
    2. systemctl enable docker.service
    3. systemctl status docker.service

    4、查看 docker 版本信息

    docker version

    5、docker 信息查看

    docker info   ##查看信息

    五、Docker 镜像操作

    1、搜索镜像

    格式:docker search 关键字

    1. 格式:docker search 关键字
    2. docker search nginx

    2、获取镜像

    格式:docker pull 仓库名称[:标签]
    #如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

    docker pull nginx

    3、镜像加速器

    浏览器访问  https://cr.console.aliyun.com/cn-shanghai/instances/mirrors  获取镜像加速器配置

     

    1. sudo mkdir -p /etc/docker ##其实/etc/docker路径已经存在,可以不创建
    2. sudo tee /etc/docker/daemon.json <<-'EOF'
    3. {
    4. "registry-mirrors": ["https://5nbz4xnp.mirror.aliyuncs.com"]
    5. }
    6. EOF
    7. sudo systemctl daemon-reload
    8. sudo systemctl restart docker

    1. systemctl daemon-reload ##重新加载
    2. systemctl restart docker.service ##重新启动服务

    4、查看镜像信息

    镜像下载后存放在 /var/lib/docker 。
    Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

    1. [root@localhost ~]#ls /var/lib/docker/
    2. buildkit containers engine-id image network overlay2 plugins runtimes swarm tmp volumes

    5、查看下载的镜像文件信息

    镜像下载后存放在 /var/lib/docker 
    #查看下载的镜像文件信息,主要存放镜像名称与镜像id

    cat /var/lib/docker/image/overlay2/repositories.json

    6、查看下载到本地的所有镜像

    1. REPOSITORY TAG IMAGE ID CREATED SIZE
    2. nginx latest ae2feff98a0c 9 days ago 133MB
    3. --------------------------------------------------------------------------------------------
    4. REPOSITORY:镜像属于的仓库;
    5. TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
    6. IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
    7. CREATED:镜像创建时间;
    8. VIRTUAL SIZE:镜像大小;
    9. --------------------------------------------------------------------------------------------
    docker images   ##查看本地所有镜像

    7、根据镜像的唯一标识 ID 号,获取镜像详细信息

    格式:docker inspect 镜像ID号

    docker inspect 2ac752d7aeb1

    8、为本地的镜像添加新的标签

    格式:docker tag 名称:[标签] 新名称:[新标签]

    1. docker tag nginx:latest nginx:web
    2. docker images | grep nginx

    9、删除镜像

    格式:
    docker rmi 仓库名称:标签                #当一个镜像有多个标签时,只是删除其中指定的标签
    或者
    docker rmi 镜像ID号                        #会彻底删除该镜像

    注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

    1. docker rmi nginx:web
    2. docker rmi 2ac752d7aeb1

    10、存出镜像:将镜像保存成为本地文件

    格式:docker save -o 存储文件名 存储的镜像

    1. cd /opt
    2. docker save -o nginx nginx:latest #存出镜像命名为nginx存在当前目录下
    3. ls

    12、载入镜像:将镜像文件导入到镜像库中

    这儿就直接空的上面演示

    13、上传镜像

    默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
    可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
    在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

    1. docker tag nginx:latest soscscs/nginx:web #添加新的标签时必须在前面加上自己的dockerhub的username
    2. docker login #登录公共仓库
    3. Username:soscscs
    4. password:abc123456
    5. docker push soscscs/nginx:web #上传镜像

    六、Docker容器操作

    1、创建容器

    容器创建:就是将镜像加载到容器的过程。
    新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

    1. 格式:docker create [选项] 镜像
    2. 常用选项:
    3. -i:让容器开启标准输入
    4. -t:让 Docker 分配一个伪终端 tty
    5. -it :合起来实现和容器交互的作用,运行一个交互式会话 shell
    docker create -it nginx:latest /bin/bash

    2、查看容器的运行状态

    1. docker ps ## 不加 -a 只查看运行状态的容器
    2. docker ps -a ## 加 -a 选项可以显示所有的容器
    3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    4. 容器的ID号 加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称

    3、启动容器

    格式:docker start 容器的ID/名称

    1. docker start e59f6a2bf793
    2. docker ps
    3. docker ps -a

    4、创建并启动容器

    可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。


    注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出。

    docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

    /var/lib/docker
    当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
    (1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
    (2)利用镜像创建并启动一个容器;
    (3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
    (4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
    (5)分配一个地址池中的 IP 地址给容器;
    (6)执行用户指定的应用程序,执行完毕后容器被终止运行。

    1. docker run centos:7 /usr/bin/bash -c ls /
    2. docker ps -a

    5、在后台持续运行 docker run  创建的容器

    需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

    1. docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
    2. docker ps -a

    docker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器

    6、终止容器运行

    格式:docker stop 容器的ID/名称

    1. docker stop 1d8367958564
    2. docker ps -a

    7、容器的进入

    需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。

    格式:docker exec -it 容器ID/名称 /bin/bash
    -i 选项表示让容器的输入保持打开;
    -t 选项表示让 Docker 分配一个伪终端。

    1. ocker start 1d8367958564 #进入容器前,确保容器正在运行
    2. docker exec -it 1d8367958564 /bin/bash
    3. ls
    4. exit #退出容器后,容器仍在运行
    5. docker ps -a
    6. docker run -it centos:7 bash #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

    8、容器与本机的文件复制

    1.怎么把宿主机的文件传入到容器内部

    1. [root@localhost opt]#docker cp /opt/test.txt 1d8367958564:/opt
    2. [root@localhost opt]#docker exec -it 1d8367958564 /bin/bash

    2.怎么把容器的文件传入到宿主机

    1. [root@1d8367958564 opt]# docker cp 1d8367958564:/opt/ccc.txt ./
    2. exit

    9、容器的导出与导入

    用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

    1.容器的到处

    导出格式:docker export 容器ID/名称 > 文件名

    docker export 1d8367958564 > centos7.tar

    2.容器的导入

    导入格式:cat 文件名 | docker import – 镜像名称:标签

    cat centos7.tar | docker import - centos7:test			#导入后会生成镜像,但不会创建容器

    10、容器和镜像的批量删除

    格式:docker rm [-f] 容器ID/名称

    1. docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash #批量停止容器
    2. docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop
    3. docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash #批量删除所有容器
    4. docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm
    5. docker images | awk 'NR>=2{print "docker rmi "$3}'| bash #批量删除镜像
    6. docker images | grep none | awk '{print $3}' | xargs docker rmi #删除none镜像
    7. docker rm $(docker ps -a -q) #批量清理后台停止的容器

     

    1.删除已经停止的容器  

    1. docker ps -a
    2. docker stop df1e7ec0e972
    3. docker rm df1e7ec0e972 #删除已经终止状态的容器

    2.删除正在运行的容器

    docker rm -f 1d8367958564			#强制删除正在运行的容器

     3.批量停止容器

    docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash

    4.批量删除所有容器

    docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash

    5.批量删除镜像

    docker images | awk 'NR>=2{print "docker rmi "$3}'| bash

    总结:

    1、虚拟化

    VMware workstation  个人版
    VMware  sphere / ESXI   企业级虚拟化
    openstack(开发)/KVM  Linux环境虚拟机   私有云环境

    2、容器

    • 容器:  提供多台主机上运行应用程序的相同的运行环境
    • Docker是一个开源的应用容器引擎,基于go语言开发  是容器里面的运行应用的工具,是一个轻量级的虚拟机,可用在docker多个平台去使用
    • docker容器可以被看做运行在宿主机上的一个进程   容器共享宿主机内核
    • 容器通过namespace(命名空间、名称)资源隔离,   通过cgroup(资源配额)去限制资源

    3、Docker核心概念

    1. 镜像:运行容器的基础,包含运行应用程序所需的所有内容
    2. 容器:是从镜像藏剑的运行实例
    3. 仓库:集中保存镜像的地方(共有仓库 docker hub、私有仓库harbor)
  • 相关阅读:
    python面经(滴滴、理想、momenta)
    jQuery的使用,下载以及一些小案例
    22 OpenCV 直方图计算
    笔记本电脑查询连接wifi密码
    软件测试面试题及答案,2022最强版
    需要电脑文字配音工具的快看过来
    一个简单的基于形态学处理的报纸图像版面分割算法matlab仿真
    linux之iptables防火墙
    find命令-随心所欲查找服务器的文件
    计算机竞赛 基于深度学习的人脸识别系统
  • 原文地址:https://blog.csdn.net/AH99999/article/details/138090027