【docker概念和实践 4】(4) 本地镜像提交到本地仓库

news2024/11/16 22:26:13

一、说明

        registry是一个镜像,该镜像专门生成镜像仓库的容器,registry是基于http协议,那就是说,在单机、局域网、或者互联网上都可以建立registry数据仓库,存放自己构建的镜像。本篇专门介绍如何在本地单机上建立容器仓库。

至于在阿里云上推送镜像,参考:【docker概念和实践 4】(3)本地镜像提交到阿里云

二、准备一个自己的镜像

本节专门在单机上构建镜像仓库。采用registry镜像构建。下面将叙述本局的要点。

2.1 、实验前期工作

        在实验实施前,需要做以下准备活动:

  • 安装了docker-engine。
  • pull了一个image,如ubuntu20.04作为被推拉的镜像。
  • 对容器做一些操作,apt install net-tools
  • commit转化成本地image

2.2 修改一个ubuntu容器

首先,在本地拉取一个ubuntu20.04镜像:

docker pull ubuntu:20.04

运行ubuntu20.04并进入容器:

docker run -it ubuntu:20.04 /bin/bash

 在此ubuntu20.04内部,没有网络工具,因此安装它:

apt update
apt install net-tools
exit

此时,启动的ubuntu20.04镜像已经追加了网络工具(支持ifconfig命令)。 

2.3 将容器转化成镜像

docker ps -a

 将容器转化成镜像:

docker commit -a "Mr Smith" -m "this is ubuntu for ifconfig"  c87c1de84192 myubuntu:1

此时,myubuntu:1镜像在本地docker-engine工作区生成。

docker images

        以上实现了从镜像到容器再到镜像的转化过程。流程如下;

         下面,我们将介绍如何将自己构建的myubuntu:1镜像推送到本地的仓库,下文我们将介绍如何构建自己的本地仓库。

三、搭建本地仓库registry并测试

3.1 实现步骤将如下

1 下载镜像Docker Registry
2 运行私有库Registry,相当于本地有一个私有Docker hub
3 案例演示创建立一个新镜像ubuntu,在容器安装ifconfig命令(见上面二节)
4 curl验证私服库上有什么镜像
5 将新镜像修改成私有服务规范的Tag
6 修改配置文件,使其支持http
7 push将本地镜像推送到私服库中
8 curl验证私服库上有什么镜像

3.2 、挑选版本Registry:V1和V2

        Docker Registry 2.0版本在安全性和性能上做了诸多优化,因此要优于1.6之版本。

        这里不再介绍v1.6,直接推荐用v2版本

3.3 宿主机环境介绍

明确以下项目:

宿主机项目明细项
操作系统 win10虚拟机ubuntu18.04
网络地址注意:这里的网络地址可不是win10下的IP地址,而是虚拟机下ifconfig获得的。
主机名称主机名、或(localhost)、或ip地址,以上三个均可,也是指虚拟机ubuntu下获得。

3.4 拉取构建仓库的镜像registry

  • 从云端(阿里云,或docker-hub)上拉取registry:2
docker pull registry:2
docker run -d -p 5000:5000 --name myreg registry:2

        以上两句基本将仓库容器启动起来。容器本地查看:docker ps

  •  配置私有仓库数据源

        这一步至关重要,是配置当前的docker引擎,是从哪里提取镜像,这里有两个数据源:阿里云、本地仓库。

vim /ets/docker/daemon.json
{
  "registry-mirrors": ["https://3005ts6m.mirror.aliyuncs.com"] 
}

        进入vim进行手工编辑,追加了"insecure-registries": ["192.168.131.137:5000"],这个ip地址是从宿主机上ifconfig得来。也就是localhost默认地址。

        修改结果:

{
  "registry-mirrors": ["https://3005ts6m.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.131.137:5000"]
}

        一般需要重启动docker:systemctl restart docker。 

3.5 从本地推送镜像到本地registry仓库:

        先查看本地引擎管辖的镜像表:

         将上文中自己制作的myubuntu:1推送到本机的仓库,分两步走:

  • 第一步:将镜像做成标准名称
[root@node1 ~]# docker tag myubuntu:1 localhost:5000/myubuntu

  

       注意:

        1)这一步是固定操作,凡是push提交必须作这种操作,就是将myubuntu:1做成一个固定提交格式。

        2)其中的localhost可以是registry所在主机的ip地址。

         检查执行结果,发现仅仅是多了一个 localhost:5000/myubuntu镜像:

         第二步:推送该镜像到仓库

docker push localhost:5000/myubuntu

3.6 测试操作结果

        值得一提的是,registry仓库是基于http协议,虽然在本地单机上查看它,也是需要用http的访问方法完成,查看语句是:

curl  -XGET http://192.168.1.6:5000/v2/_catalog

        可以看到myubuntu已经在仓库了。

        尝试从本地registry中拉取 localhost:5000/my-ubuntu 镜像:

docker pull localhost:5000/myubuntu
成功拉取!说明安装成功。

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

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

相关文章

Python中的集合(set and frozenset)语法汇总

集合的基本语法知识目前有两种集合类型:set和frozenset。可变集合:set()set类型是可变的, 其内容可以使用 add() 和 remove() 这样的方法来改变,因为是可变的,所以没有哈希值,且不能被用作字典的键或其它集…

java线上项目排查,Arthas简单上手

Arthas 是Alibaba开源的Java诊断工具。参考:Arthas 用户文档 — Arthas 3.5.4 文档 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代…

一起Talk Android吧(第四百七十九回:集合类视图动画)

文章目录使用方法属性介绍示例代码各位看官们大家好,上一回中咱们说的例子是"旋转类视图动画",这一回中咱们说的例子是"集合类视图动画"。闲话休提,言归正转,让我们一起Talk Android吧! 使用方法 集合类动画…

web测试2:嵌入式移植boa

读此篇之前,先读前一篇 1.在源码编译的时候,指定交叉编译工具链 lkmaoubuntu:~$ arm-linux-gnueabi-gcc --version arm-linux-gnueabi-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc.…

C++工程的CMakeLists.txt文件编写

最简单的demo工程如下&#xff1a; #include <iostream> #include <string> int main(int argc,char** argv) {std::cout << "hello world" << std::endl;return 0; } 文件结构如下&#xff0c;其中include可用来自定义接口功能类。 CMake…

IMX Linux 用户手册 --- 1

IMX Linux 用户手册 — 1 第一章 概述 本文档介绍了i.MX LinuxOS BSP (BSP代表Board Support Package)在i.MX平台上的构建和安装方法。它还涵盖了特殊的i.MX功能和如何使用它们。 本文档还提供了运行i.MX平台的步骤&#xff0c;包括单板拨码开关设置、U-Boot引导加载程序的配置…

IP地址是什么

我们知道&#xff0c;网络通讯的本质就是收发数据包。如果说收发数据包就跟收发快递一样。那IP地址就类似于快递上填的收件地址和发件地址一样&#xff0c;有了它&#xff0c;路由器就可以开始充当快递员的角色&#xff0c;在这个纷繁复杂的网络世界里找到该由谁来接收这个数据…

linux上git三板斧的使用

前言 现在在我们的生活当中&#xff0c;用我们程序员的一句玩笑话&#xff0c;来说就是“全球最大的同性交友网站就是githup”。 那么它具有什们功能呢&#xff0c;能让人这么吹捧&#xff0c;用通俗易懂的话来说就是&#xff0c;储存和管理代码&#xff0c;它会记录我们修改甚…

java知识总结(一)

ArrayList和LinkedList的区别1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。2. 对于随机访问ArrayList要优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问,而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,查找某个…

【开发工具 - 安装手册】BeyondCompare4 下载与安装+免费使用

1. 官网 Download Beyond Compare Free Trial 2. 下载 阿里云盘 &#xff08;不限速 - 推荐&#xff09;官网下载3. 安装&#xff08;无脑下一步&#xff09; 4.三种方法长期免费使用 方法一 修改初始化文件 C:\Users\Administrator\AppData\Roaming\BCompare\BCompare.ini…

【奇妙的数据结构世界】用图像和代码对队列的使用进行透彻学习 | C++

第十一章 队列 目录 第十一章 队列 ●前言 ●一、队列是什么&#xff1f; 1.简要介绍 2.具体情况 ●二、队列操作的关键代码段 1.类型定义 2.顺序队列的常用操作 3.链式队列的常用操作 ●总结 前言 简单来说&#xff0c;数据结构是一种辅助程序设计并且进行优化的方法论&…

介绍一款2023年新出的mysql管理工具: FlyBird Database Manager

FlyBird Database Manager 介绍 FlyBird Database Manager 是一款mysql 界面化管理工具&#xff0c; 使用go语言编写&#xff0c;天然支持Windows, MacOS, Linux等主流平台。 提供无需安装的命令行版本&#xff0c; 命令行中启动服务&#xff0c;以html支持UI界面,在浏览器中…

[Linux]进程控制

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文…

1607_PC汇编语言_汇编语言简介

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 刚刚看了一个小章节&#xff0c;感觉是对8086的汇编做了一个简单的介绍。当然&#xff0c;这里面也有各种机器汇编通用的属性。 1. 等价符号关联的两个表达其实是等…

在线教育-谷粒学院学习笔记(十)

文章目录1 介绍2 登录业务流程3 JWT令牌4 阿里云短信服务5 登录功能6 注册功能7 根据token获取用户信息8 整合首页登录和注册1 介绍 登录实现流程 注册接口 整合JWT整合阿里云短信服务 登录接口 注册、登录的前端实现 2 登录业务流程 单一服务器模式 使用session对象实现 …

仿牛客论坛项目(下)

代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目15.kafka1.阻塞队列2.Kafka入门简介术语解释下载配置命令3.Spring整合Kafka引入依赖配置代码16.系统通知(Kafka)发送系统通知功能(点赞关注评论)1.编写Kafka消息队列事件Event实体类2.编写Kafka生产者3.编写Kafka消…

Spring 源码编绎

本示例基于 spring-framework-5.2.22.RELEASE GradleWapper jdk1.8.0_131编译# 环境准备mavenjdk8idea# 源码下载进入https://github.com/spring-projects/spring-frameworkSpring的源码是发布在github上面的下载最新版发布版源码不要太纠结版本区别&#xff0c;无需刻意保证…

BM5 合并k个已排序的链表

目录 描述 示例1 示例2 思路&#xff1a; 代码&#xff1a; 描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 示例1 输入&#xff1a;[{1,2,3},{4,5,6,7}] 返回值&#xff1a;{1,2,3,4,5,6,7} 示例2 输入&#xff1a;[{1,2},{1,4,5},{6}] 返回值…

Linux常用命令——rmmod命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rmmod 从运行的内核中移除指定的内核模块 补充说明 rmmod命令用于从当前运行的内核中移除指定的内核模块。执行rmmod指令&#xff0c;可删除不需要的模块。Linux操作系统的核心具有模块化的特性&#xff0c;应…

Elasticsearch(六)--ES文档的操作(中)---修改文档

一、前言 上篇文章我们了解了ES的插入和批量插入文档的操作&#xff0c;分别通过ES的kibana客户端以及Java高级Rest客户端进行学习&#xff0c;那么本篇则进入到对文档的修改操作&#xff0c;同新增文档&#xff0c;也有更新单条文档和批量更新文档操作&#xff0c;但还多出一…