【云原生】Docker基本原理及镜像管理

news2024/12/27 11:44:07

目录

一、Docker概述

1.1 IT架构的演进:

1.2 Docker初始

1.3 容器的特点

1.4 Docker容器与虚拟机的区别

1.5 容器在内核中支持2种重要技术

1.6 Docker核心概念

1)镜像

2)容器

3)仓库

二、安装Docker

2.1 Yum安装Docker

2.2 查看Docker信息

三、Docker的镜像管理命令

3.1 搜索镜像

3.2 获取镜像(下载镜像)

3.3 镜像加速下载

3.4 查看本地有哪些镜像

3.5 查看镜像的详细信息( 获取容器/镜像的元数据 )

3.6 为本地的镜像添加新的标签

3.7 删除镜像

3.8 批量删除镜像

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

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

3.11 上传镜像(将镜像上传到官方仓库)

总结

1、Docker是什么?能干什么?

2、Docker容器与虚拟机的区别:

3、 linux六大namespace(命名空间):

4、Docker的三大核心概念:

5、镜像管理命令:


一、Docker概述

1.1 IT架构的演进:

裸金属 → 虚拟机 → 容器→ 函数化、代码化

1-11.png

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

1.运行物理机,也称为裸金属

2.虚拟机VM,可以在一台物理机上创建多个虚拟机,并把物理配置分发成多个虚拟配置

  • 缺点:性能损耗大,大约损耗50%

虚拟机常用软件:

VMware workstation(windows)

vm Sphere+ESXI (Windows server)

KVM(linux内核)

3.容器 (常用软件:docker、podman、rocket、container)

  • 容器内部自身有一个小型操作系统

4.函数(函数化,代码化)

1-9.jpg

1.2 Docker初始

  • Docker是一个开源的应用容器引擎,基于go语言开发并遵守了apache2.0协议开源。

  • Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。

  • Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

    (Docker是创建容器的工具。应用运行在容器中,每个容器都有一致的运行环境,所以可以在任何主机中运行。即实现“一次封装,到处运行”的目的。)

Docker的Logo:

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

1-8.webp

Docker的设计宗旨:

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere

  • 即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。
  • docker是创建容器的工具。应用运行在容器中,每个容器都有一致的运行环境,所以可以在任何主机中运行。即实现“一次封装,到处运行”的目的。

1.3 容器的特点

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

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

1.4 Docker容器与虚拟机的区别

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

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

使用类型功能KVM虚拟机Docker容器Docker容器的提升
日常运维CPU利用率利用率低且不均利用率高、均匀提高了CPU的利用率
硬盘空间占用20G ~ 200G150M ~ 300M极大降低了硬盘空间的占用,避免了空间浪费
内存占用共享2G ~ 32G内存根据服务占用内存避免了内存不足的问题
服务器支持数量20个左右1000+降低成本
启动速度以分钟计量,较慢,主要是操作系统启动较为耗时以秒计量,其启动速度就是启动一个进程的时间遇到问题可快速重启或者回滚
项目延伸拓展项目需要重新部署虚拟机,过程复杂通过云平台扩容,比较方便扩容方便、快捷
新上线项目开发、测试、生产环境很难实现同步,容易出现问题能够实现所有环境统一标准,不再依赖操作系统和软件库效率大幅度上升
特性Docker容器虚拟机
内核的使用共享内核独立内核
启动速度秒级(相当于启动一个进程)分钟级(启动操作系统)
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离(因为是独立的操作系统)
操作系统主要支持Linux几乎所有(KVM)
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离
  • docker就相当于宿主机的一个进程,所以损耗微乎其微。
  • 虚拟机和操作系统之间是hypervisor,虚拟化管理程序,虚拟化各种硬件资源,这中间就会有资源损耗。

1.jpg

1.5 容器在内核中支持2种重要技术

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

linux六大namespace(命名空间):

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

1-2.jpg

1.6 Docker核心概念

1)镜像

  • Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
  • 通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。

2)容器

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

3)仓库

  • Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
  • Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 目录下。

1-8.jpg

二、安装Docker

2.1 Yum安装Docker

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

Yum安装默认安装最新版本,目前最新版本是2020版本。但工作中不会用这么新的版本,前一个版本是2019版本。

#关闭防火墙和selinux
 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 会作为依赖包被安装
 ​
 systemctl start docker.service
 systemctl enable docker.service

2-1.png

2-2.png

2-3.png

2-4.png

2-5.png

2.2 查看Docker信息

 

#查看 docker 版本信息
 docker version
 #注意:Yum安装默认安装最新版本,目前最新版本是2020版本。但工作中不会用这么新的版本,前一个版本是2019版本。
 ​
 #docker信息查看
 docker info
 //查看的部分信息如下:
 Client:
  Context:    default
  Debug Mode: false
  Plugins:
   app: Docker App (Docker Inc., v0.9.1-beta3)
   buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
   scan: Docker Scan (Docker Inc., v0.17.0)
 ​
 Server:
  Containers: 0                #容器数量
   Running: 0
   Paused: 0
   Stopped: 0
  Images: 0                    #镜像数量
  Server Version: 20.10.17     #server版本
  Storage Driver: overlay2     #docker使用的是overlay2 文件驱动
   Backing Filesystem: xfs     #宿主机上的底层文件系统
   Supports d_type: true
   Native Overlay Diff: true
   userxattr: false
  Logging Driver: json-file
  Cgroup Driver: cgroupfs      #cgroups 驱动,默认为cgroupfs,也可以修改为systemd
  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

查看 docker 版本信息:

2-6.png

docker信息查看:

2-7.png

三、Docker的镜像管理命令

3.1 搜索镜像

 

3-1.png

1656002277654.png

3.2 获取镜像(下载镜像)

 

3-2.png

3.3 镜像加速下载

 

登录阿里云平台,获取加速器地址:

3-3.png

配置镜像加速:

3-3-2.png

3-3-3.png

3-3-4.png

3.4 查看本地有哪些镜像

镜像下载后存放在 /var/lib/docker

 #查看下载的镜像文件信息  cat /var/lib/docker/image/overlay2/repositories.json  ​ 

3-4.png

3-5.png

3.5 查看镜像的详细信息( 获取容器/镜像的元数据 )

 

3-6.png

3.6 为本地的镜像添加新的标签

添加标签后,镜像的ID号并不会改变。

 

3-7.png

3.7 删除镜像

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

 

3-9.png

3-10.png

3.8 批量删除镜像

 

1656064879196.png

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

将镜像保存成为本地文件,实际是将镜像打包成一个tar包。

 

3-11.png

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

主机A通过scp命令将打包好镜像文件传给主机B:

3-12.png

主机B将镜像文件导入到镜像库中:

3-13.png

3.11 上传镜像(将镜像上传到官方仓库)

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号,hub.docker.com 。默认上传到公有仓库,其他人可以下载仓库中的镜像。如果想设置成私有仓库(仅自己可见),不允许其他人下载,需要付费。

可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。docker logout 命令进行登出。

在上传镜像之前,还需要先对本地镜像添加新的标签,在镜像名称前加上仓库名,然后再使用 docker push 命令进行上传。

3-15.png

3-16.png

3-17.png

3-18.png

总结

1、Docker是什么?能干什么?

Docker是基于go语言开发的开源容器引擎,可以在任何主机上运行容器应用,并且每个容器都是一个轻量级的虚拟机。实现“一次封装,到处运行”的目的。

2、Docker容器与虚拟机的区别:

特性Docker容器虚拟机
内核的使用共享内核独立内核
启动速度秒级(相当于启动一个进程)分钟级(启动操作系统)
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离(因为是独立的操作系统)
操作系统主要支持Linux几乎所有(KVM)
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离
  • 容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用共他任何可执行文件的内存,非常轻量。

  • 虚拟机运行的是一个完整的操作系统,每个虚拟机使用独立的内核,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多,会产生资源损耗。

3、 linux六大namespace(命名空间):

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

4、Docker的三大核心概念:

镜像、容器、仓库

5、镜像管理命令:

命令作用
docker search <仓库/镜像名>搜索镜像
docker pull <仓库/镜像名>下载镜像
docker images查看本地的所有镜像
docker images -q只显示本地所有镜像的ID号
docker inspect <镜像ID/容器ID>查看镜像的详细信息( 获取镜像/容器的元数据 )
docker tag 名称:[标签] [仓库名/]名称:[新标签]为本地的镜像添加新的标签
docker rmi < 镜像名称:标签>删除镜像的某个标签
docker rmi <镜像ID> -f删除指定镜像
docker rmi $(docker images -q)删除本地所有镜像
docker save -o 镜像文件.tar 镜像名称:标签存出镜像:将镜像保存为本地文件
docker load -i[或<] 镜像文件载入镜像:将镜像文件导入到镜像库中
docker login登录公共仓库docker hub
docker push 仓库名/镜像名:标签上传镜像(将镜像上传到官方仓库)
docker logout登出docker hub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/891991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NEW】视频云存储EasyCVR平台H.265转码配置增加分辨率设置

关于视频分析EasyCVR视频汇聚平台的转码功能&#xff0c;我们在此前的文章中也介绍过不少&#xff0c;感兴趣的用户可以翻阅往期的文章进行了解。 安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求&#xff0c;让平台在内网、专网、VPN、广域网、互联网等各…

sCrypt编程马拉松于8月13日在复旦大学成功举办

继6月在英国Exeter大学成功举办了为期一周的区块链编程马拉松后&#xff0c;美国sCrypt公司创始人兼CEO刘晓晖博士带领核心团队成员王一强、郑宏锋、周全&#xff0c;于8月13日在复旦大学再次成功举办了一场全新的sCrypt编程马拉松。 本次活动由上海可一澈科技有限公司与复旦大…

【数据挖掘】使用 Python 分析公共数据【01/10】

一、说明 本文讨论了如何使用 Python 使用 Pandas 库分析官方 COVID-19 病例数据。您将看到如何从实际数据集中收集见解&#xff0c;发现乍一看可能不那么明显的信息。特别是&#xff0c;本文中提供的示例说明了如何获取有关疾病在不同国家/地区传播速度的信息。 二、准备您的…

QT中的按钮控件Buttons介绍

目录 Buttons 按钮控件 1、常用属性介绍 2、按钮介绍 2.1QPushButton 普通按钮 2.2QtoolButton 工具按钮 2.3Radio Button单选按钮 2.4CheckButton复选按钮 2.5Commam Link Button命令链接按钮 2.6Dialog Button Box命令链接按钮 Buttons 按钮控件 在Qt里&#xff0c;…

公告:微信小程序备案期限官方要求

备案期限要求 1、若微信小程序未上架&#xff0c;自2023年9月1日起&#xff0c;微信小程序须完成备案后才可上架&#xff0c;备案时间1-20日不等&#xff1b; 2、若微信小程序已上架&#xff0c;请于2024年3月31日前完成备案&#xff0c;逾期未完成备案&#xff0c;平台将按照…

docker启用cgroup v2

要求 本人的操作系统是kali&#xff0c;基于debian docker info如果你这里是2那么说明启用了&#xff0c;如果是1&#xff0c;那么就未启用 对于Docker来说&#xff0c;Cgroups v2的使用需要满足以下条件&#xff1a; Linux内核版本在4.15以上。 uname -r 系统已经启用Cgro…

vue-组件库-storybook:理解storybook、实践

一、理解 storybook Storybook是一个开源的工具&#xff0c;可以帮助前端开发者更好地构建、测试和展示组件。 具体来说&#xff0c;Storybook可以做以下几件事情&#xff1a; 1、为每个组件提供一个独立的页面&#xff0c;可以快速展示或调试组件。 2、管理多个组件&#x…

微服务-Ribbon(负载均衡)

负载均衡的面对多个相同的服务的时候&#xff0c;我们选择一定的策略去选择一个服务进行 负载均衡流程 Ribbon结构组成 负载均衡策略 RoundRobinRule&#xff1a;简单的轮询服务列表来选择服务器AvailabilityFilteringRule 对两种情况服务器进行忽略&#xff1a; 1.在默认情…

linux部署clickhouse(单机)

一、下载安装 1.1、下载地址 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区阿里巴巴开源镜像站&#xff0c;免费提供Linux镜像下载服务&#xff0c;拥有Ubuntu、CentOS、Deepin、MongoDB、Apache、Maven、Composer等多种开源软件镜像源&#xff0c;此外还提供域名解析DNS、…

使用 Visual Studio Code Docker 工具调试 .NET 容器

作者&#xff1a;Chet Husk 排版&#xff1a;Alan Wang Visual Studio Code Docker 工具已发布1.26.0版本&#xff0c;这个版本为使用 .NET SDK 构建和调试容器映像提供了内置支持。 VS Code 中的 Docker 调试 Visual Studio Code Docker 工具使开发人员可以轻松入门容器。它…

微服务—Eureka注册中心

eureka相当于是一个公司的管理人事HR,各部门之间如果有合作时&#xff0c;由HR进行人员的分配以及调度&#xff0c;具体选哪个人&#xff0c;全凭HR的心情&#xff0c;如果你这个部门存在没有意义&#xff0c;直接把你这个部门撤销&#xff0c;全体人员裁掉&#xff0c;所以不想…

跟着美团学设计模式(感处)

读了着篇文章之后发现真的是&#xff0c;你的思想&#xff0c;你的思维是真的比比你拥有什么技术要强的。 注 开闭原则 开闭原则&#xff08;Open-Closed Principle&#xff09;是面向对象设计中的基本原则之一&#xff0c;它的定义是&#xff1a;一个软件实体应该对扩展开放…

Redis——list类型详解

概要 Redis中的list类型相当于双端队列&#xff0c;支持头插&#xff0c;头删&#xff0c;尾插&#xff0c;尾删&#xff0c;并且列表中的内容是可以重复的。 如果搭配使用rpush和lpop&#xff0c;那么就相当于队列 如果搭配使用rpush和rpop&#xff0c;那么就相当于栈 lpu…

皮爷咖啡基于亚马逊云科技的数据架构,加速数据治理进程

皮爷咖啡&#xff08;Peet’s Coffee&#xff09;是美国精品咖啡品牌&#xff0c;于2017年进入中国&#xff0c;为中国消费者带来传统经典咖啡饮品&#xff0c;并特别呈现更加丰富的品质咖啡饮品体验。通过深入应用亚马逊云科技云原生数据库产品Amazon Redshift以及Amazon DMS等…

开源的密码学工具库:openssl安装在docker容器环境Linux(ubuntu18.04)

OpenSSL&#xff08;Open Secure Socket Layer&#xff09;是一个开源的密码学工具库&#xff0c;它提供了一系列的加密、解密、认证和通信安全相关的功能。OpenSSL 最初是为了支持安全的网络通信而设计的&#xff0c;但后来它的功能逐渐扩展到了许多不同的领域&#xff0c;包括…

【SSL证书】阿里云免费 SSL证书申请 + nginx 部署全解

一、环境 二、步骤 三、实战 Stage 1&#xff1a;申请免费证书 1. 进入 - 数字证书管理服务(SSL证书&#xff09; 2. 创建证书 3. 申请证书 Stage 2&#xff1a;域名解析 1. 进入 - 域名管理 2. 点击 - 域名 3. 点击 - 域名解析 4. 点击 - 添加记录 5. 返回 - 数…

润和软件HopeStage操作系统正式上架阿里云、华为云、腾讯云商店

近日&#xff0c;润和软件HopeStage操作系统正式上架阿里云、华为云、腾讯云商店。 随着科技的发展&#xff0c;云服务成为现代社会信息和资讯的交换、共享、存储、检索、应用等重要方式。阿里云、华为云、腾讯云作为我国云服务市场三巨头&#xff0c;其云商店产品全面覆盖云、…

spring(15) SpringBoot启动过程

目录 一、过程简介二、过程流程图三、源码分析1、运行 SpringApplication.run() 方法2、确定应用程序类型3、加载所有的初始化器4、加载所有的监听器5、设置程序运行的主类6、开启计时器7、将 java.awt.headless 设置为 true8、获取并启用监听器9、设置应用程序参数10、准备环境…

【Golang系统开发】搜索引擎(2) 压缩词典

写在前面 这篇文章我们就给出一系列的数据结构&#xff0c;使得词典能达到越来越高的压缩比。当然&#xff0c;和倒排索引记录表的大小相比&#xff0c;词典只占据了非常小的空间。那么为什么要对词典进行压缩呢&#xff1f; 这是因为决定信息检索系统的查询响应时间的一个重…

《计算机网络:自顶向下方法》第五章--网络层:控制平面

控制平面作为一种网络范围的逻辑&#xff0c;不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报&#xff0c;而且控制网络层组件和服务如何配置和管理 传统上&#xff0c;控制平面功能与数据平面的转发功能在一起实现&#xff0c;在路由器中作为统一的整体…