DAY 79 云原生DOCKER的基本原理及镜像管理

Docker概述

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

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

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

  • 缺点:性能损耗大,大约损耗50%
虚拟机常用软件:

VMware workstation(windows)

vm Sphere+ESXI (Windows server)

KVM(linux内核)

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

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

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

Docker初始

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

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

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

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

Docker的Logo:

  • Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。

  • 鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

Docker的设计宗旨:

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

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

容器的特点

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

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

Docker容器与虚拟机的区别

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

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

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

  • 虚拟机和操作系统之间是hypervisor,虚拟化管理程序,虚拟化各种硬件资源,这中间就会有资源损耗。

容器在内核中支持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以后的内核才支持)

Docker核心概念

1)镜像

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

2)容器

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

3)仓库

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

安装Docker

目前Docker只能支持64位系统

Yum安装Docker

关闭防火墙

#关闭防火墙
systemctl stop firewalld.service
setenforce 0

安装依赖包

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
 
#yum-uti1s:提供了yum-config-manager工具。
#device mapper:是inux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
#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并设置为开机自动启动

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce      #docker-ce-cli、containerd.io 会作为依赖包被安装

 重启docker并设置开机自启

systemctl start docker.service
systemctl enable docker.service

安装好的Docker系统有两个程序,Docker服务端和Docker客户端。

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

Docker基本操作

查看docker版本信息

docker version

 查看docker信息

docker info

 docker镜像操作

查询镜像

 格式:docker search 关键字(镜像名称或仓库名)

 获取镜像

格式:docker pull 仓库名称[:标签]
#标签:一个镜像里可能存在多个标签,每个标签可能代表不同的版本
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为latest标签。

 查看镜像

查看本地镜像

docker images

 查看下载的镜像文件信息

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

 查看镜像的详细信息

 格式:docker inspect 镜像ID号/容器ID     #根据镜像的唯一标识 ID 号,获取镜像详细信息

docker logs #查询日志

镜像加速

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

cd /etc/docker/
ls
vim daemon.json
-------------------------------------------------------------
{
  "registry-mirrors": ["https://ino8qqag.mirror.aliyuncs.com"]
--------------------------------------------------------------
systemctl daemon-reload      #重新加载
systemctl restart docker     #重启docker



sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ino8qqag.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker






 镜像更换标签

格式:docker tag 旧库名:[旧标签] [新库名]:[新标签]
docker tag nginx:latest nginx:my
docker tag nginx:latest mm:qyd

删除镜像

删除标签
格式:docker rmi 镜像名:标签
docker rmi id -f
#-f:id号一样强删(慎用)
docker rmi mm:qyd
docker rmi id eb4a57159180  -f

批量删除镜像

 docker images        #查看本地所有镜像
 docker images -q     #查看本地有哪些镜像,只显示镜像ID
 docker rmi $(docker images -q) -f    #批量删除本地所有镜像

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

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

 格式:docker save -o 存储文件名 存储的镜像
 docker save -o mynginx.tar nginx:latest     #打包镜像命名为mynginx.tar存在当前目录下
 ls -lh

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

 格式:
 docker load < 存出的文件
 或者
 docker load -i 存出的文件
 ​
 #主机A通过scp命令将打包好镜像文件传给主机B,主机B将镜像文件导入到docker本地
 scp ~/mynginx.tar 192.168.137.10:/root/
 ​
 #主机B将镜像文件导入到镜像库中 
 docker load < mynginx.tar  或者   docker load -i mynginx.tar 

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

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

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

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

docker tag nginx:latest yuji007/nginx  #添加新的标签,在镜像名称前加上仓库名,yuji007为仓库名称
 ​
 docker login            #登录公共仓库
  Username:  #账号
  password:  #密码
 ​
 docker push yuji007/nginx     #上传镜像
 docker search yuji007         #搜索yuji007仓库中的镜像
 docker pull yuji007/nginx     #下载yuji007仓库中的镜像

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的高精度奶牛检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度奶牛检测识别系统可用于日常生活中或野外来检测与定位奶牛目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的奶牛目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

pytorch 绘制一维热力图

热力图 热力图&#xff08;Heat Map&#xff09;是指用 X 轴 和 Y 轴 表示的两个分类字段确定数值点的位置&#xff0c;通过相应位置的矩形颜色去表现数值的大小&#xff0c;颜色深代表的数值大。 热力图是非常特殊的一种图&#xff0c;可以显示不可点击区域发生的事情。热力…

springcloud整合gateway

1.新建gateway模块 添加gateway依赖 2.添加gateway配置 2.1配置转发地址 2.2 配置断言规则 3.启动 order-nacos,stock-nocas,gateway模块 3.集成nacos 3.1添加nacos依赖 3.2 配置uri,添加nacos 3.3重启gateway服务

密码学中的SM2

目录 概述 功能 密钥生成 基点G的生成 模数p 密钥生成过程 加解密 加密过程&#xff1a; 解密过程&#xff1a; 数字签名 概述 对第5步r的计算方式分析 对第6步s的计算方式分析 加密模式 优缺点 论文和研究方向推荐 论文 研究方向 概述 SM2是中国密码学算法…

Jupyter notebook运行环境创建

进入到jupyter notebook,没找到自己之前创建的环境xzc_pytorch 进入到Anaconda prompt,输入如下命令 (xzc_pytorch) C:\Users\xzc> conda install ipykernel安装完后&#xff0c;重启jupyter notebook发现还是没有 &#xff0c;此时选择手动创建&#xff0c;在base环境下执…

Linux系统之部署Etherpad文档编辑器

Linux系统之部署Etherpad文档编辑器 一、Etherpad介绍1.1 Etherpad简介1.2 Etherpad特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统是否安装Node.js 四、部署Node.js 环境4.1 下载Node.js安…

DAY 76 分布式监控平台:zabbix

市场上常用的监控软件&#xff1a; 传统运维&#xff1a;zabbix、 Nagios云原生环境&#xff1a; Prometheus &#xff08;go语言开发的&#xff09; zabbix概述 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去…

html实现好看的个人介绍,个人主页模板5(附源码)

文章目录 1.设计来源1.1 主界面1.2 我的介绍界面1.3 我的能力界面1.4 项目案例界面1.5 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.3 源代码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/13127331…

uniapp——Android 异常: failed to connect to localhost/127.0.0.1

bug解决——携带出现&#xff1a; Waiting to navigate to: /pages/……, do not operate continuously: /pages/…… failed to connect to localhost/127.0.0.1 解决方法&#xff1a; 我的报错&#xff1a;主要是failed to connect to localhost/127.0.0.1引发的Waiting …

Python3 flask-socketio 整合vue

1. 前端说明 前端追加了vue-socket.io的依赖 更新package.json及package-lock.json后&#xff0c;需要补充库 2. 后端说明 服务端需要安装的python包 suse python 3.6.12 Flask_SocketIO-4.3.1-py2.py3-none-any.whl python_socketio-4.6.0-py2.py3-none-any.whl python_…

python爬虫学习简记

目录 页面结构的简单认识 爬虫概念理解 urllib库使用 爬虫解析工具xpath JsonPath Selenium requests基本使用 scrapy 页面结构的简单认识 如图是我们在pycharm中创建一个HTML文件后所看到的内容 这里我们需要认识的是上图的代码结构&#xff0c;即html标签包含了hea…

前端页面的性能测试

目录 前言&#xff1a; 介绍 Lighthouse Cypress和Lighthouse 总结 前言&#xff1a; 前端页面性能测试是指对前端页面的响应时间、加载速度、页面交互性等方面进行测试和评估。 介绍 随着 Web 应用的空前发展&#xff0c;前端业务逐渐复杂&#xff0c;为了处理这些复杂…

编程的未来 - 还有未来么?

缘起 唐门教主上个月某天深夜写了一篇博客 --《编程的未来》&#xff0c;要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题&#xff0c;上周&#xff0c;在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候&#xff0c;大家也稍微谈了一下这个话题&#xff0c;但是谈…

Vue-全局事件总线(GlobalEventBus)

全局事件总线(GlobalEventBus) 全局事件总线是vue中特别厉害的一种组件中通信的方式&#xff0c;它可以实现任意组件中通信&#xff0c;随便拿出来两个组件就能互通数据&#xff0c;就像对讲机一样&#xff0c;它在开发中用的也是特别的多 1 编写案例 首先准备两个组件&…

diffusion model(三)—— classifier guided diffusion model

classifier guided diffusion model 背景 对于一般的DM&#xff08;如DDPM&#xff0c; DDIM&#xff09;的采样过程是直接从一个噪声分布&#xff0c;通过不断采样来生成图片。但这个方法生成的图片类别是随机的&#xff0c;如何生成特定类别的图片呢&#xff1f;这就是clas…

【Vue】Vite基础学习

文章目录 Vite 基础学习一、单页面应用程序二、Vite 基本使用2.1 创建 vite 项目2.2 项目结构2.3 项目运行流程 Vite 基础学习 一、单页面应用程序 单页面应用程序&#xff08;英文名&#xff1a;Single Page Application&#xff09;简称 SPA&#xff0c;顾名思义&#xff0c…

Server - 配置安装 Git LFS | BWM-NG | Tmux | BOS 等命令

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131302104 构建实验Docker&#xff1a; nvidia-docker run -it --name git-lfs-[your name] --nethost -p [port]:[port] -v [nfs path…

基于Python+Django+mysql+html图书管理系统

基于PythonDjangomysqlhtml图书管理系统 一、系统介绍二、功能展示1.用户登陆2.用户注册3.密码修改4.图书查询5.图书添加6.图书修改7.图书删除 三、其它系统四、获取源码 一、系统介绍 该系统实现了 用户登陆、用户注册、密码修改、图书查询、图书添加&#xff0c;图书修改、图…

大厂OKR管理法:公开透明是最大特点

大厂OKR管理法&#xff1a;公开透明是最大的特点 仔细想&#xff0c;这是一件破天荒的事情 企业内部大部分的任务“公开透明” 公开透明会减少巨大的沟通成本 每个人的关键任务几乎是全部公开 估计少数的财务、人事、公关方面的不会 趣讲大白话&#xff1a;公开透明损耗少 【趣…

尚硅谷甄选--(暂时不更新,实习,后期有时间更)

文章目录 搭建后台管理系统模板项目的资源地址项目初始化2.1.1环境准备2.1.2初始化项目2.2项目配置一、eslint配置1.1vue3环境代码校验插件1.2修改.eslintrc.cjs配置文件1.3.eslintignore忽略文件1.4运行脚本 二、配置**prettier**2.1安装依赖包2.2.prettierrc.json添加规则2.3…