云原生Docker镜像管理

目录

Docker 概述

Docker是什么

Docker的设计宗旨

Docker的特性

Docker的特性

Docker与虚拟机的区别

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

Linux 的namespace (命名空间)

 Docker核心概念

安装 Docker

Docker 镜像操作

#搜索镜像

 获取镜像

镜像加速下载

查看镜像信息

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

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

删除镜像 

 存出镜像

载入镜像 

上传镜像


Docker 概述

Docker是什么

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

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

Docker的设计宗旨

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

Docker的特性

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

Docker的特性

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


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

Docker与虚拟机的区别

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

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

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。
 

Linux 的namespace (命名空间)

namespace的六项隔离
namespace系统调用参数

隔离内容

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

 Docker核心概念

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

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

●仓库
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
 
systemctl start docker.service
systemctl enable docker.service 
--------------------------------------------------------------------------------------------
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

#查看 docker 版本信息
docker version

#docker 信息查看
docker info  
Client:Context:    defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)Server:Containers: 0						# 容器数量Running: 0Paused: 0Stopped: 0Images: 1							# 镜像数量Server Version: 20.10.3			# server 版本Storage Driver: overlay2			# docker 使用的是 overlay2 文件驱动Backing Filesystem: xfs			# 宿主机上的底层文件系统Supports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfs			# Cgroups 驱动Cgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2Default Runtime: runcInit Binary: docker-initcontainerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939brunc version: ff819c7e9184c13b7c2607fe6c30ae19403a7affinit version: de40ad0Security Options:seccompProfile: defaultKernel Version: 3.10.0-693.el7.x86_64		# 宿主机的相关信息Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 976.3MiBName: localhost.localdomainID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDTDocker Root Dir: /var/lib/docker			# docker 数据存储目录Debug Mode: falseRegistry: https://index.docker.io/v1/		# registry 地址Labels:Experimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:							# 加速站点https://6ijb8ubo.mirror.aliyuncs.com/Live Restore Enabled: false

Docker 镜像操作

#搜索镜像

格式:docker search 关键字
docker search nginx

 获取镜像

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

镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
 
mkdir -p /etc/docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://qr1yy59q.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

查看镜像信息

镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,
其中 containers 目录存放容器信息,image 目录存放镜像信息,
overlay2 目录下存放具体的镜像底层文件。#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json#查看下载到本地的所有镜像
docker imagesREPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    ae2feff98a0c   9 days ago   133MB
--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;

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

格式:docker inspect 镜像ID号
docker inspect ae2feff98a0c●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点

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

格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:web
 
docker images | grep nginx

删除镜像 

式:
docker rmi 仓库名称:标签                #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号                        #会彻底删除该镜像
 
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
 
docker rmi nginx:web

 存出镜像

将镜像保存成为本地文件
格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:latest            #存出镜像命名为nginx存在当前目录下
ls -lh

载入镜像 

将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件
 
docker load < nginx

上传镜像

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

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

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

相关文章

计算机竞赛YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快&#xff0c;YOLOv6还没用熟YOLOv7就来了&#xff0c;如果有同学的毕设项目想用上最新的技术&#xff0c;不妨看看学长的这篇文章&#xff0c;学长带大家简单的…

2023年软考网工上半年下午真题

试题一&#xff1a; 阅读以下说明&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸对应的解答栏内。 [说明] 某企业办公楼网络拓扑如图1-1所示。该网络中交换机Switch1-Switch 4均是二层设备&#xff0c;分布在办公楼的各层&#xff0c;上联采用干兆光纤。核心交换…

Jenkins对应java版本

官网地址&#xff1a;Java Support Policy 运行jenkins时,需要使用下列Java版本:

Linux 基本指令及 Xshell 常用热键操作

文章目录 Linux 基本指令入门指令文件/目录 相关文件操作文件基本操作文件处理文件压缩/解压压缩/解压 为 .zip 文件解压/压缩 为.tgz 文件 时间相关指令 Xshell 常用热键Linux系统关机 windows 和 Linux 文件互传/Linux 系统之间文件互传Linux 传入WindowsWindows 传入Linuxli…

【m98】视频帧的 jitterbuffer 1:

VCMJitterBuffer D:\XTRANS\m98_rtc\rtc-webrtc\src\modules\video_coding\jitter_buffer.h使用2个map和一个list管理VCMFrameBuffer 指针对象:UnorderedFrameList free_frames_ RTC_GUARDED_BY(mutex_);FrameList decodable_frames_ RTC_GUARDED_BY(mutex_);FrameList incomp…

导致 JVM 内存泄露的 ThreadLocal 详解

为什么要有 ThreadLocal 当我们在学习JDBC时获取数据库连接时&#xff0c;每次CRUD的时候都需要再一次的获取连接对象&#xff0c;并把我们的sql交给连接对象实现操作。 在实际的工作中&#xff0c;我们不会每次执行 SQL 语句时临时去建立连接&#xff0c;而是会借助数据库连接…

扩展表空间(PDB数据库):add_tbs.sh

#!/bin/bash source ~/.bash_profile export pdb_namepdb #PDB名称 export ts_namedefault_tbs #表空间 export inc_size_gb1 #需要增加的GB数,单位G #单次增长上限 inc_size_mb_threshold$((32 * 1024)) inc_size_mb$((${inc_size_gb} * 1024)) pdb_name$(ec…

学习css 伪类:has

学习抖音&#xff1a; 渡一前端提薪课 首先我们看下:has(selector)是什么 匹配包含&#xff08;相对于 selector 的 :scope&#xff09;指定选择器的元素。可以认为 selector 的前面有一个看不见的 :scope 伪类。它的强大之处是&#xff0c;可以实现父选择器和前面兄弟选择器…

常见工具指令【Vim | GIT | ZIP | UNZIP | IDEA】

VIM 快捷键说明Ctrl U (up)向上翻动半页Ctrl B (back)向上翻动一页Ctrl D (down)向下翻页半页Ctrl F (forward)向下翻动一页 GIT 指令解释git init 使用指定目录作为Git仓库git add filename向资源库添加文件filenamegit rm file从资源库中删除文件git branch 分支名称创…

linux系统部署jar脚本编译

一 shell脚本 #启动参数 START_OPTS=$3#AppName=biz-score-service ##!/bin/bash SpringBoot=$2#JVM参数 JVM_OPTS="-Dname=$SpringBoot -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX…

TWDS车辆轮对故障、尺寸动态检测系统

随着我国铁路的建设发展&#xff0c;客运专线网络形成&#xff0c;既有铁路的货运能力得到释放&#xff0c;货物运输向重载方向发展&#xff0c;运输组织呈现长交路、运转周期短、编组固定的特点。 跟踪调查表明重载车辆车轮磨耗较普通车辆更为严重。大秦线c80型车辆在不到1个…

sudo -i与sudo su的区别

sudo -i 和 sudo su 都用于以超级用户&#xff08;root&#xff09;的身份运行命令&#xff0c;但两者有以下区别&#xff1a; 参数&#xff1a; sudo -i 中的 -i 表示以交互式方式登录为超级用户&#xff0c;会执行超级用户的登录脚本&#xff08;例如.bashrc&#xff09;&…

mac(M1)安装anaconda3

首先下载 然后正常安装即可&#xff0c;之所以我现在测试了anaconda,因为我发现miniconda后&#xff0c;jupyter notebook的安装就出现问题&#xff0c;所以就直接卸载miniconda&#xff0c;而直接安装anaconda了 (base) yxkbogon ~ % pip list Package …

代码规范问题,“static“ base class members should not be accessed via derived types

代码规范问题,“static” base class members should not be accessed via derived types 例如在使用fastjson时 LinkedHashMap days JSONObject.parseObject(JSONObject.toJSONString(data.get(CommonConstant.AQIW)),LinkedHashMap.class);这里使用了JSONObject来调用parse…

汽车一键启动点火开关按键一键启动按钮型号规格

汽车点火开关/移动管家一键启动按键/汽车改装引擎启动按钮型号&#xff1a;YD828溥款开关 一键启动按钮&#xff08;适用于配套启动主机使用或原车一键启动开关更换&#xff09; 1.适合配套专用板板安装 2.开孔器开孔安装 3.原车钥匙位安装 外观&#xff1a;黑色 按钮上有3种不…

基于位置的前馈神经网络

目录 1、什么是前馈全连接层 2、前馈全连接层的作用 3、代码实现FFN 1、什么是前馈全连接层 在Transformers中前馈全连接层就是具有两层线性层的全连接网络 2、前馈全连接层的作用 考虑注意力机制可能对复杂过程的拟合程度不够&#xff0c;通过增加家两层网络来增强模型的能…

MVCC和BufferPool缓存机制

文章目录 1. MVCC多版本并发控制机制2. BufferPool缓存机制 1. MVCC多版本并发控制机制 Mysql可以在可重复读隔离级别下可以保证事务较高的隔离性&#xff0c;这个隔离性是由MVCC机制来保证的&#xff0c;对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性&#…

机器学习与模式识别作业----决策树属性划分计算

文章目录 1.决策树划分原理1.1.特征选择1--信息增益1.2.特征选择2--信息增益比1.3.特征选择3--基尼系数 2.决策树属性划分计算题2.1.信息增益计算2.2.1.属性1的信息增益计算2.2.2.属性2的信息增益计算2.2.3.属性信息增益比较 2.2.信息增益比计算2.3.基尼系数计算 1.决策树划分原…

设计模式 - 解释器模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 解释器模式&#xff08;Interpreter Pattern&#xff09;指给定一门语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;该解释器使用该表示来解释语言中的句子&#xff0c;属于行为型设计模式。是…

AIGC|利用大语言模型实现智能私域问答助手

随着ChatGPT的爆火&#xff0c;最近大家开始关注到大语言模型&#xff08;LLM&#xff09;这个领域。像雨后春笋一样&#xff0c;国内外涌现出了很多LLM。作为开发者&#xff0c;我们通常会关注LLM各自擅长的领域和能力&#xff0c;然后思考如何利用它们的能力来解决某个场景或…