Docker镜像其他相关操作

news2024/11/27 20:27:08

镜像其他相关操作

1. 镜像备份

使用 docker save 将指定镜像保存成 tar 归档文件。

docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o /root/mycentos7.tar mycentos:7
  • -o:镜像打包后的归档文件输出的目录。

2. 镜像恢复

使用 docker load 导入 docker save 命令导出的镜像归档文件。

docker load [OPTIONS]
docker load -i mycentos7.tar
  • --input, -i:指定导入的文件;
  • --quiet, -q:精简输出信息。

3. 镜像迁移

镜像迁移同时涉及到了上面两个操作,备份和恢复。

我们可以将任何一个 Docker 镜像从一台机器迁移到另一台机器。在迁移过程中,首先我们要把容器构建为 Docker 镜像。然后,该 Docker 镜像被作为 tar 包文件保存到本地。此时只需要拷贝或移动该镜像到我们想要的机器上,恢复该镜像并运行容器即可。

4. 镜像仓库

4.1 注册账号

官网:https://hub.docker.com/

在这里插入图片描述

4.2 登录账号

通过 docker login 命令输入账号密码登录 DockerHub。

在这里插入图片描述

4.3 推送镜像至仓库

需要先创建repository

在这里插入图片描述

先给镜像设置标签 docker tag local-image:tagname new-repo:tagname

再将镜像推送至仓库 docker push new-repo:tagname

docker tag mscentos:7 mszlu/test-centos:1.0.0
docker push mszlu/test-centos:1.0.0

在这里插入图片描述

4.4 查看仓库镜像

在这里插入图片描述

4.5 拉取镜像

通过 docker pull mszlu/test-centos:1.0.0 测试镜像是否可以拉取。

4.6 退出登录

通过 docker logout 命令退出 DockerHub。

5. 私有仓库

DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是:

  • 由于网络的原因,从 DockerHub 下载和上传镜像速度可能会比较慢;
  • 在生产上使用的 Docker 镜像可能包含我们的代码、配置信息等,不想被外部人员获取,只允许内网的开发人员下载。

为了解决以上问题,Docker 官方提供了一个叫做 registry 的镜像用于搭建本地私有仓库使用。在内部网络搭建的 Docker 私有仓库可以使内网人员下载、上传都非常快速,不受外网带宽等因素的影响,同时不在内网的人员也无法下载我们的镜像,并且私有仓库也支持配置仓库认证功能。

5.1 拉取私有仓库镜像

拉取私有仓库镜像

docker pull registry

5.2 修改配置

修改 daemon.json 文件

vim /etc/docker/daemon.json

添加以下内容,用于让 Docker 信任私有仓库地址,保存退出

{
    "insecure-registries": ["192.168.200.101:5000"]
}

重新加载配置信息及重启 Docker 服务

# 重新加载某个服务的配置文件
sudo systemctl daemon-reload
# 重新启动 docker
sudo systemctl restart docker

5.3 创建私有仓库容器

创建私有仓库容器

docker run -di --name registry -p 5000:5000 -v /mnt/docker/docker_registry:/var/lib/registry registry

  • -d:后台运行容器;
  • --name:为创建的容器命名;
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射;
  • -v:将容器内 /var/lib/registry 目录下的数据挂载至宿主机 /mnt/docker/docker_registry 目录下;

打开浏览器输入:http://ip:5000/v2/_catalog 看到 {"repositories":[]} 表示私有仓库搭建成功。

5.4 推送镜像至私有仓库

先给镜像设置标签 docker tag local-image:tagname new-repo:tagname

再将镜像推送至私有仓库 docker push new-repo:tagname

docker tag mscentos:7 192.168.200.101:5000/test-centos:1.0.0
docker push 192.168.200.101:5000/test-centos:1.0.0

打开浏览器输入:http://192.168.200.101:5000/v2/_catalog 可以看到私有仓库中已上传的镜像。

由于我们做了目录挂载,因此可以在宿主机 /mnt/docker/docker_registry/docker/registry/v2/repositories 目录下查看。

5.5 配置私有仓库认证

私有仓库已经搭建好了,要确保私有仓库的安全性,还需要一个安全认证证书,防止发生意想不到的事情。所以需要在搭建私有仓库的 Docker 主机上先生成自签名证书。

创建证书存储目录

mkdir -p /usr/local/registry/certs

生成自签名证书命令

openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/registry/certs/domain.key -x509 -days 365 -out /usr/local/registry/certs/domain.crt

  • openssl req:创建证书签名请求等功能;
  • -newkey:创建 CSR 证书签名文件和 RSA 私钥文件;
  • rsa:2048:指定创建的 RSA 私钥长度为 2048;
  • -nodes:对私钥不进行加密;
  • -sha256:使用 SHA256 算法;
  • -keyout:创建的私钥文件名称及位置;
  • -x509:自签发证书格式;
  • -days:证书有效期;
  • -out:指定 CSR 输出文件名称及位置;
5.5.1 生成自签名证书

通过 openssl 先生成自签名证书,运行命令以后需要填写一些证书信息,里面最关键的部分是:Common Name (eg, your name or your server's hostname) []:192.168.200.101,这里填写的是私有仓库的地址。

[root@localhost ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/registry/certs/domain.key -x509 -days 365 -out /usr/local/registry/certs/domain.crt
Generating a 2048 bit RSA private key
.......................+++
.........................+++
writing new private key to '/usr/local/registry/certs/domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:mszlu
Organizational Unit Name (eg, section) []:mszlu
Common Name (eg, your name or your server's hostname) []:192.168.200.101
Email Address []:test@mszlu.com

5.5.2 生成鉴权密码文件
# 创建存储鉴权密码文件目录
mkdir -p /usr/local/registry/auth
# 如果没有 htpasswd 功能需要安装 httpd
yum install -y httpd
# 创建用户和密码,-c创建文件,-b使用命令行中的密码,而不是提示输入密码,-B强制bcrypt加密密码(非常安全)
# 第一次生成时使用-c参数创建用户及密码文件,下次再生成时无需使用-c参数会追加至文件
htpasswd -cbB /usr/local/registry/auth/htpasswd root root

htpasswd 是 apache http 的基本认证文件,使用 htpasswd 命令可以生成用户及密码文件

5.5.3 创建私有仓库容器
docker run -di --name registry -p 5000:5000 \
   -v /mydata/docker_registry:/var/lib/registry \
   -v /usr/local/registry/certs:/certs \
   -v /usr/local/registry/auth:/auth \
   -e "REGISTRY_AUTH=htpasswd" \
   -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
   -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
   -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
   -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
   registry

5.5.4 推送镜像至私有仓库失败

先给镜像设置标签 docker tag local-image:tagname new-repo:tagname

再将镜像推送至私有仓库 docker push new-repo:tagname

docker tag mscentos:7 192.168.200.101:5000/test-centos:1.0.1
docker push 192.168.200.101:5000/test-centos:1.0.1

如果直接 push 镜像肯定会失败,并且出现 no basic auth credentials 的错误,这是因为我们没有进行登录认证

5.5.5 登录账号

通过 docker login 命令输入账号密码登录私有仓库

​ 再次 push 镜像,发现已经可以推送成功了

.168.200.101:5000/test-centos:1.0.1
docker push 192.168.200.101:5000/test-centos:1.0.1




如果直接 push 镜像肯定会失败,并且出现 `no basic auth credentials` 的错误,这是因为我们没有进行登录认证

#### 5.5.5 登录账号

 通过 `docker login` 命令输入账号密码登录私有仓库

​	再次 push 镜像,发现已经可以推送成功了

​	通过 `docker logout` 命令退出账号

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

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

相关文章

【活动回顾】| ABeam德硕受邀参加SAC+AI 智能分析与预算管理体验营并发表演讲

近日,主题为“商业AI,智慧未来”的SACAI 智能分析与预算管理体验营顺利召开,本次活动由SAP主办,ABeam中国受邀出席并发表专题演讲【云端计划,预见未来——SAP分析云全面预算案例分享】。 现场照 随着AI再次成为科技界和…

基于YOLOV5+Pyqt5农作物叶片病害检测系统

1、引言 农作物病害的精准检测与识别是推动农业生产智能化与现代化发展的重要举措。随着计算机视觉技术的发展,深度学习方法已得到快速应用,利用卷积神经网络进行农作物病害检测与识别成为近年来研究的热点。基于传统农作物病害识别方法,分析…

高阶DS---AVL树详解(每步配图)

目录 前言: AVL树的概念: AVL树节点的定义: AVL树的插入(重点) AVL树的旋转: (1)新节点插入较高左子树的左侧---右单旋 (2)新节点插入较高右子树的右侧---左单旋 …

经纬恒润AUTOSAR产品成功适配芯来RISC-V车规内核

近日,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS(ECU AUTOSAR Software,以下简称EAS)在芯来提供的HP060开发板上成功适配芯来科技的RISC-V处理器NA内核,双方携手打造了具备灵活、可靠、高性能、强安全性的解决方案。这极…

【嵌入式智能产品开发实战】(十二)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的安装运行】

目录 程序的安装 程序安装的本质 在Linux下制作软件安装包 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正&#xf…

Python学习之-协程

前言: 在Python中,协程(coroutines)是利用生成器(generator)的特性,来实现并发编程的一种方式。从Python 3.5开始,通过引入async和await关键字,Python对异步IO提供了更原生的支持,使得协程成为了实现异步编…

脑机辅助推导算法

目录 一,背景 二,华容道中道 1,问题 2,告诉脑机如何编码一个正方形格子 3,让脑机汇总信息 4,观察图,得到启发式算法 5,根据启发式算法求出具体解 6,可视化 一&am…

【Blockchain】GameFi | NFT

Blockchain GameFiGameFi顶级项目TheSandbox:Decentraland:Axie Infinity: NFTNFT是如何工作的同质化和非同质化区块链协议NFT铸币 GameFi GameFi是游戏和金融的组合,它涉及区块链游戏,对玩家提供经济激励&#xff0c…

python通过shapely 的 valid 判断aoi图形是否有效

测试aoi坐标: 116.527712,39.924304;116.527123,39.924353;116.52707,39.923985;116.527685,39.92397;116.527712,39.924304 如图所示是一个有效的坐标,使用python代码判断是否有效: 代码: from shapely.geometry import Polyg…

我开发了一款只用一个注解就实现分布式锁的工具框架

相信大家在JAVA中知道锁的一个概念。在JAVA中,锁是一种机制,用于控制并发代码的执行。锁用于保护共享资源的访问,确保只有一个线程能够同时访问这些资源。锁可以防止多个线程同时执行对共享资源的修改操作,从而避免数据不一致或竞…

探讨在大数据体系中API的通信机制与工作原理

** 引言 关联阅读博客文章:深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章:深入理解HDFS工作原理:大数据存储和容错性机制解析 ** 在当今数字化时代,数据已经成为企业发展和决策的核心。随着数据规模的不断增长…

zabbix_yum安装

目录 一.配置zabbix的yum源 二.安装zabbix server 三.安装zabbix agent 四.安装zabbix web界面 五.安装数据库 六.配置数据库 七.为zabbix server配置数据库 八.启动服务,web界面安装 九.遇到php版本过低问题 前置条件:基于Rocky Linux8操作系统配置的,建议…

Oracle19c ADG搭建

文章目录 一、环境配置1、主机环境2、host文件配置 二、主库配置1、 开启归档2、redo日志3、修改参数文件4、配置TNS文件5、静态监听6、拷贝密码文件 三、备库配置1、开启归档2、redo日志3、修改参数文件4、配置TNS文件5、配置静态监听 四、构建DG1、验证监听2、主库登入rman&a…

【计算机考研】408全年保姆级规划+资料分享

408的复习顺序其实没有标准,推荐先复习数据结构 复习完数据结构之后,再去学操作系统和计算机网络的一些知识点就会很好理解。 数据结构➡计算机组成原理➡操作系统➡计算机网络。 大家可以按照上面这个顺序来学,其实按照这个顺序来学也是因…

泛零售行业大会员经营的发展趋势?

​随着消费者需求的快速变化和技术的不断进步,泛零售行业大会员经营将呈现如下发展趋势: 第一,会员精细化运营和个性服务将上升为泛零售企业未来的战略重点之一。 存量时代,市场竞争加剧,对绝大多数泛零售企业来说,得…

2024三掌柜赠书活动第二十期:搜索之道:信息素养与终身学习的新引擎

目录 目录 前言 信息素养 终身学习 搜索引擎 信息素养与终身学习 关于《搜索之道:信息素养与终身学习的新引擎》 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《搜索之道:信息素养与终身学习的新引擎》全书速览 结束语 前言 随着互…

密码算法概论

基本概念 什么是密码学? 简单来说,密码学就是研究编制密码和破译密码的技术科学 例题: 密码学的三个阶段 古代到1949年:具有艺术性的科学1949到1975年:IBM制定了加密标准DES1976至今:1976年开创了公钥密…

微服务之分布式事务概念

微服务之分布式事务概念 CAP定理和Base理论 CAP定理 CAP定理在1998年被加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标: 一致性(Consistency)可用性(Availability)分区容错性&#xff…

LLM应用:Prompt flow vs LangChain

背景 Prompt flow和LangChain都是LLM时代,为高效地构建LLM应用而生。 Prompt flow是Microsoft开源的,其诞生时,LangChain已经很有名气了。 所以作为后生的Prompt flow会为我们带来哪些新的东西呢? ​​​​​​​ Prompt flo…

一文了解JAVA的常用API

目录 常用kpimathSystemRuntimeObjectObjectsBigIntegerBigDecima正则表达式包装类 常用kpi 学习目的: 了解类名和类的作用养成查阅api文档的习惯 math 工具类。因为是工具类,因此直接通过类名.方法名(形参)即可直接调用 abs:获取参数绝对…