当前位置: 首页 > news >正文

Docker--Docker引擎与镜像相关命令

Docker引擎架构

Docker引擎是用来运行和管理容器的核心软件,其现代架构由四部分主要组件构成:

Docker Client、Dockerd、Containerd 与 Runc

Docker Client

Docker 客户端,Docker 引擎提供的CLI工具,用于用户向Docker 提交命令请求。

Dockerd

Dockerd 即 Docker Daemon, 主要包含的功能有镜像构建、镜像管理、REST API、核心网络及编排等。其通过gRPC 与Containerd 进行通信。

Containerd

Containerd 即 Container Daemon, 主要功能是管理容器的声明周期。其本身不会创建容器,而是调用Runc 来创建容器。

Runc

Runc,Run Container,只有一个作用:创建容器。其本质是一个独立的容器运行时CLI工具。其在fork出一个容器子进程后启动该容器进程。容器进程启动完毕后,Runc会自动退出。

Shim

Shim(垫片)是实现“Daemonless Container (无Docker Daemon 与 Container Daemon容器)”不可或缺的工具,使容器与Docker Daemon解耦,使得Docker Daemon的维护与升级不会影响运行中的容器。

每次创建容器,Containerd 会fork 出Shim进程,由Shim进程fork出Runc进程。当Runc退出之前,会先将新容器进程的父进程指定为相应的Shim进程。

除了作为容器的父进程外,Shim进程还具有两个重要的功能:

  • 保持所有STDIN与STDOUT 流的开启状态,从而使当Docker Daemon重启时,容器不会因为Pipe 的关闭而终止。
  • 将容器的退出状态反馈给Docker Daemon。

Docker 引擎分类

Docker 分为三类:Moby、社区版Docker -CE 和企业版Docker -EE。

Docker引擎安装

下面以Docker 在CentOS7中的安装为例。

  1. 安装需要的包

    yum install -y yum-utils
  2. 添加docker 下载仓库

    将国外仓库地址替换

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. 安装docker

    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 启动docker

    systemctl start docker
  5. 启动成功测试

    docker version
  6. docker重启

    systemctl restart docker
  7. 查看docker 状态

    systemctl status docker
  8. 开机自启动Docker

    systemctl enable docker
  9. 停止docker

    systemctl stop docker
  10. 关闭开机启动

    systemctl disable docker
  11. 配置国内阿里云加速器

    1.找到对应页面cr.console.aliyun.com,然后登录进去。然后打开容器镜像服务页面


如果上面的源拉取不下

sh mkdir -p /etc/docker

3.修改daemon.json

sh tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://v2xxxxxxx03t.mirror.aliyuncs.com"] } EOF

4.重新加载服务配置文件:systemctl daemon-reload

5.重启docker:systemctl restart docker

Docker引擎卸载

  1. 移除yum

    yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
  2. rm两个目录

    这两个目录存放在镜像、容器、数据卷,需要手动删除。

    rm -rf /var/lib/docker rm -rf /var/lib/containerd

Docker镜像

镜像是一种轻量级、可执行的独立软件包,也可以说是一个精简的操作系统。

镜像中包含应用软件及其运行环境。

镜像包含某个软件所需的所有内容,包括代码、库、环境变量和配置文件等。几乎所有应用,直接打包为Docker 镜像后就可以运行。

镜像运行时就称为了容器,容器设计的非常小巧,所以镜像也比较小,镜像不包含内核,其共享宿主机的内核;镜像中只包含简单的Shell,或没有shell。

镜像仓库分类

根据镜像发布者的不同,分成四类不同的镜像仓库

  1. Docker Official Image:Docker官方镜像仓库。此类仓库中的镜像由Docker官方构建发布,代码指令高且安全,有完善的文档。一般常用的系统、工具软件、中间件都有对应的官方镜像仓库,如:Zookeeper\Redis\Nginx等。

    官方镜像仓库的名称<repository>一般直接为该类软件的名称<software-name>

  2. Veriffied Publisher: 已验证发布者仓库。此类仓库中的镜像由非Docker官方的第三方发布。该第三方由Docker 公司认证通过,一般为大型企业或组织。Docker 公司会向其办法“VERIFIED PUBLISHER” 标识。这种仓库中镜像的质量有保证。

    除了官方镜像仓库,其他都是非官方镜像仓库。

    非官方镜像仓库名称<repository>一般由发布者用户名与软件名称两部分构成,形式为:<username>/<software-name>

  3. Sponsored OSS: 由Docker公司赞助开发的镜像仓库。这种仓库中的镜像质量也是有保证的。

  4. 无认证仓库:没有以上任何标识的仓库。这种仓库中镜像质量无法保证,使用时需谨慎。

第三方镜像中心

镜像中心默认是官方的Docker Hub。但是镜像中心可以配置为指定的第三方镜像中心。

第三方镜像中心的仓库名称<repository>由三部分组成:<domain-name>/<username>/<software-name>。其中<domain-name>指第三方镜像中心的域名或IP。

镜像定位

对于任何镜像,可通过<repository>:<tag>进行唯一定位。

<tag>是镜像版本号。<tag>如果不指定,默认为latest(最新版)。

镜像相关命令

# 将镜像从docker hub拉取到本地。 docker pull # 简化日志输出,简化拉取过程中的日志输出。 docker pull -q redis # 通过digest拉取.语法格式为docker pull <repository>@<digest>. #digest 是镜像内容的一个hash值,只要镜像内容发生改变,其hash值也会改变。 # digest 是包含前面的sha256的,表示采用的Hash算法是sha256. docker pull zookeeper@sha256:dnasdhawer32kfsi4598jfur32904490 # 查看本地所有镜像资源信息。这些镜像会按照创建时间由近及远排序。 docker images # 查看指定镜像 docker images zookeeper # 查看镜像完整id,docker images显示的id是截取后的结果,使用--no-trunc参数显示的是完整的镜像id docker images --no-trunc # 查看镜像digest docker images --digest docker images busybox --digest # 仅显示镜像id docker images -q # 过滤镜像,使用-f 选项 # dangling=true 用于过滤出悬虚镜像,即没有Repository与tag的镜像。 # 悬虚镜像的Repository与tag 显示的是<none> docker images -f dangling=true # -f before 用于列举出指定镜像创建时间之前的所有镜像 docker images -f before=registry # -f since 用于列举出指定镜像创建时间之后的所有镜像 docker images -f since=registry # -f reference 用于列举出与表达式相匹配的镜像 docker images -f reference=centos:* docker images -f reference=*:latest # 格式化显示 docker images --format {{.Repostiory}}:{{.Tag}}:{{.Size}}

http://www.gsyq.cn/news/1604321.html

相关文章:

  • 【infra之路】10-PagedAttention 与 KV Cache 管理
  • 3分钟掌握AI智能分层:Layerdivider让单图变多层的终极指南
  • 5分钟快速上手:diff-pdf - 免费开源的PDF差异检测神器
  • 基于SQL实现分组的文字排序聚合
  • 8-EnBoT-SORT:面向高密度热红外无人机的层次化融合关联追踪与伪样本生成方法
  • 高速接口静电防护:ESD器件选型与电容考量实战
  • 泛化管理化技术模板与泛型编程
  • GEO代理总部提供售后支持吗
  • Splunk Enterprise高危漏洞CVE-2024-36991深度剖析与复现指南
  • 如何在Kodi上免费搭建115网盘云端影院:终极观影解决方案
  • AXI DMA实战:从ZYNQ PS到PL的高效数据通路构建【Vivado设计】
  • 研究背景:解决视频世界模型的“长时漂移”问题
  • 软件设计的模块划分与接口定义
  • 最新量化初学四步走,概念代码回测模拟别混在一起
  • 2.1 java面试题:说一说springcloud 的组件作用和各个组件之间是如何写作的。
  • 工业以太网PHY芯片TLK10xL外围电路设计与PCB布局实战指南
  • 如何彻底告别网盘限速:8大平台免费直链下载加速终极指南
  • 免费解锁9大网盘下载新姿势:LinkSwift直链下载助手完全指南
  • 移动端网络优化:弱网环境下的体验提升
  • 单片机IWIP SOCKET UDP实验
  • Pixelle-Video终极指南:5分钟掌握AI短视频自动生成技巧
  • 5大技巧掌握Blender CAD参数化设计:从零到机械精度快速入门
  • Context Cache:HarmonyOS PC 下一代上下文系统揭秘
  • VisualCppRedist AIO:3分钟解决Windows软件兼容性难题,游戏玩家和IT管理员都在用的神器
  • 解密Transformer:用Excel可视化构建AI模型的突破性方法
  • 告别Beat Saber管理烦恼:BSManager一站式解决方案
  • XCOM 2终极模组管理器:AML启动器完全指南
  • WebGIS坐标系实战指南:从理论到代码的精准转换
  • HI3861 WiFi开发实战:从零构建STA与AP双模式通信
  • 抽象管理化技术领域模型与通用语言