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

Docker镜像制作与推送

目录

Docker镜像制作

搭建私服

将本地镜像推送到私有库


Docker镜像制作

以创建一个新ubuntu镜像,并安装vim命令示例

运行一个ubuntu镜像,发现在镜像里面无法使用vim命令因为该ubuntu镜像只包括了其最基本的内核命令

[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED         SIZE
ubuntu                              latest    ba6acccedd29   2 years ago     72.8MB
[root@localhost ~]# docker run -it ba6acccedd29 /bin/bash
root@f1e088df465f:/# vim a.txt
bash: vim: command not found

给ubuntu容器安装vim

root@f1e088df465f:/# apt-get update
root@f1e088df465f:/# apt-get -y install vim

安装完成之后就可以在容器里面使用vim编辑器进行文件的编辑了

root@f1e088df465f:/# vim a.txt
root@f1e088df465f:/# 
将这个运行的容器制作成一个带有vim功能的ubuntu镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
[root@localhost ~]# docker commit -m="add vim" -a="mgaw" f1e088df465f linux1:1.00001
sha256:6eb1515df77a8a00c6ae3ff5c541f26a50fd585a4b67d321280612cef1f852e1
查看镜像,发现比原镜像大了很多
[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
linux1                              1.00001   6eb1515df77a   31 seconds ago   189MB
ubuntu                              latest    ba6acccedd29   2 years ago      72.8MB

运行自己制作的镜像

[root@localhost ~]# docker run -it 6eb1515df77a /bin/bash
root@cc4ba90ce5d4:/# vim a.txt
root@cc4ba90ce5d4:/# 
发现确实带有vim功能了

搭建私服

下载镜像Docker Registry

[root@localhost ~]# docker pull registry

运行私服库Registry,相当于本地的私有Docker hub

[root@localhost ~]# docker run -d -p 5000:5000 -v /mgaw/myregistry/:/tmp/registry --privileged=true registry
18d989f67ba7cab18d1654227bfb8aa4350d19b3e2d9f912302f1b19bc7d852e

将本地镜像推送到私有库

以创建一个新ubuntu镜像,并安装ifconfig命令示例

运行一个ubuntu镜像,发现在镜像里面无法使用ifconfig命令因为该ubuntu镜像只包括了其最基本的内核命令

[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED         SIZE
ubuntu                              latest    ba6acccedd29   2 years ago     72.8MB
[root@localhost ~]# docker run -it ba6acccedd29 /bin/bash
root@32766e3fc651:/# ifconfig
bash: ifconfig: command not found

给ubuntu容器安装ifconfig

root@32766e3fc651:/# apt-get update
root@32766e3fc651:/# apt-get install net-tools
root@32766e3fc651:/# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.7  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:07  txqueuelen 0  (Ethernet)RX packets 9126  bytes 30122477 (30.1 MB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 7207  bytes 395192 (395.1 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

将这个运行的容器制作成一个带有ifconfig功能的ubuntu镜像

[root@localhost ~]# docker commit -m="ifconfig" -a="mgaw" 32766e3fc651 ubuntu1:1.00002
sha256:120ca7640729ad7ca74912b3ca8f9f0dceedf7a798e39b59d122652907dd3a0e

查看镜像,发现比原镜像大了很多

[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
ubuntu1                             1.00002   120ca7640729   47 seconds ago   122MB
ubuntu                              latest    ba6acccedd29   2 years ago      72.8MB
使用 curl 工具验证私服库上有什么镜像
[root@localhost ~]# curl -XGET http://192.168.117.131:5000/v2/_catalog
{"repositories":[]}
目前私服库没有镜像上传过
将新镜像 ubuntu1:1.00002 修改符合私服规范的 Tag
命令格式: docker tag 镜像:Tag Host:Port/Repository:Tag
[root@localhost ~]# docker tag ubuntu1:1.00002 192.168.117.131:5000/ubuntu1:1.00002

查看修改后的镜像

[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
ubuntu1                             1.00002   120ca7640729   5 minutes ago    122MB
192.168.117.131:5000/ubuntu1        1.00002   120ca7640729   5 minutes ago    122MB
ubuntu                              latest    ba6acccedd29   2 years ago      72.8MB
修改 docker 配置文件使之支持 http
vim /etc/docker/daemon.json

新增如下内容

"insecure-registries": ["192.168.117.131:5000"]

最后的结果如下

 重新启动docker,并保证linux防火墙没有对5000端口拦截

[root@localhost ~]# systemctl restart docker
由于重新启动了docker,需要重新启动 docker registry 容器
[root@localhost ~]# docker run -d -p 5000:5000 -v /mgaw/myregistry/:/tmp/registry --privileged=true registry
bbef35a7bd2f80525932769666c320751565f7f01bf095f30bbfe30fc219b564

推送镜像到私服

[root@localhost ~]# docker push 192.168.117.131:5000/ubuntu1:1.00002
The push refers to repository [192.168.117.131:5000/ubuntu1]
48d7d917047c: Pushed 
9f54eef41275: Pushed 
1.00002: digest: sha256:94872dd08e5e7d4c5921cb3581f8e01631f85a81a34e9dea83a28212ffb48593 size: 741

查看私服库上是否存在镜像

[root@localhost ~]# curl -XGET http://192.168.117.131:5000/v2/_catalog
{"repositories":["ubuntu1"]}

 从私服上拉取镜像

[root@localhost ~]# docker pull 192.168.117.131:5000/ubuntu1:1.00002
1.00002: Pulling from ubuntu1
Digest: sha256:94872dd08e5e7d4c5921cb3581f8e01631f85a81a34e9dea83a28212ffb48593
Status: Image is up to date for 192.168.117.131:5000/ubuntu1:1.00002
192.168.117.131:5000/ubuntu1:1.00002

删除192.168.117.131:5000/ubuntu1镜像

[root@localhost ~]# docker rmi -f 120ca7640729
[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
linux1                              1.00001   6eb1515df77a   48 minutes ago   189MB
ubuntu                              latest    ba6acccedd29   2 years ago      72.8MB
[root@localhost ~]# docker pull 192.168.117.131:5000/ubuntu1:1.00002
1.00002: Pulling from ubuntu1
7b1a6ab2e44d: Already exists 
0981e371e319: Pull complete 
Digest: sha256:94872dd08e5e7d4c5921cb3581f8e01631f85a81a34e9dea83a28212ffb48593
Status: Downloaded newer image for 192.168.117.131:5000/ubuntu1:1.00002
192.168.117.131:5000/ubuntu1:1.00002

再次查看镜像发现镜像成功拉取下来了

[root@localhost ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
192.168.117.131:5000/ubuntu1        1.00002   120ca7640729   19 minutes ago   122MB
linux1                              1.00001   6eb1515df77a   49 minutes ago   189MB
ubuntu                              latest    ba6acccedd29   2 years ago      72.8MB

至此将本地镜像推送到私有库完成

相关文章:

Docker镜像制作与推送

目录 Docker镜像制作 搭建私服 将本地镜像推送到私有库 Docker镜像制作 以创建一个新ubuntu镜像&#xff0c;并安装vim命令示例 运行一个ubuntu镜像&#xff0c;发现在镜像里面无法使用vim命令&#xff0c;因为该ubuntu镜像只包括了其最基本的内核命令 [rootlocalhost ~]…...

Pandas时序数据分析实践—基础(1)

目录 1. Pandas基本结构2. Pandas数据类型2.1. 类型概述2.1.1. 整数类型&#xff08;int&#xff09;&#xff1a;2.1.2. 浮点数类型&#xff08;float&#xff09;&#xff1a;2.1.3. 布尔类型&#xff08;bool&#xff09;&#xff1a;2.1.4. 字符串类型&#xff08;object&a…...

5.C转python

新始: 13.列表可被改变(数据),元组不可被改变(数据),二者皆与C中的数组的大致相同 14.创建列表方法: 1.一个[ ]就是一个空的列表 2.使用list函数来创建列表 如: 15.可以在[ ]内部指定列表的初始值,打印方法: 如: 16.在python中,在同一个列表中,可以放不同类型的变量(也可…...

输出SearchFacesResponse对象的JSON格式字符串回包乱码解决方案

输出SearchFacesResponse对象的JSON格式字符串设置响应内容类型为"application/json;charsetutf-8"获取响应的字符输出流将SearchFacesResponse对象转化为JSON字符串并输出。 代码片段 System.out.println(SearchFacesResponse.toJsonString(resp)); response.setC…...

P7 链表 链表头前方插入新节点

目录 前言 01 链表头插入数据 示例代码 02 指定节点前方插入新节点 测试代码 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C》✨✨✨ &#x1f525; 推荐专栏2: 《 Linux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨…...

SCAU:主对角线上的元素之和

主对角线上的元素之和 Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G;GCC 描述 输入一个3行4列的整数矩阵&#xff0c;计算并输出主对角线上的元素之和输入格式 3行4列整数矩阵输出格式 主对角线上的元素之和输入样例 1 2 3 4 5 6 7 8 9 10 11 12输出…...

c语言——简单客户端demo

以下是一个简单的C语言客户端示例&#xff0c;用于连接到服务器并发送和接收数据&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h…...

日志检索场景ES->Doris迁移最佳实践:函数篇

函数列表 函数&#xff1a;term函数功能说明&#xff1a;查询某个字段里含有某个关键词的文档参数说明&#xff1a;返回值说明&#xff1a;ES使用示例&#xff1a; {"query": {"term": {"title": "blog"}} }Doris使用示例&#xf…...

【高效开发工具系列】jackson入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

深入理解网络非阻塞 I/O:NIO

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…...

Hdoop学习笔记(HDP)-Part.07 安装MySQL

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...

[数据结构]HashSet与LinkedHashSet的底层原理学习心得

我们区分list和set集合的标准是三个&#xff1a;有无顺序&#xff0c;可否重复&#xff0c;有无索引。 list的答案是&#xff1a;有顺序&#xff0c;可重复&#xff0c;有索引。这也就是ArrayList和LinkedList的共性 set的答案是&#xff1a;顺序内部再区分,不可以重复&#xf…...

使用unity开发Pico程序,场景中锯齿问题

1、问题 使用unity【非HDR】开发Pico程序&#xff0c;场景中锯齿问题&#xff0c;设置了unity的抗锯齿和渲染方式,及悬挂抗锯齿的脚本&#xff0c;都不能很好的解决项目中图片、文字的锯齿问题&#xff0c;通过摸索找到了妥善的方法 1、修改项目中图片的 GenerateMIpMaps 为勾…...

Spring | Spring的基本应用

目录: 1.什么是Spring&#xff1f;2.Spring框架的优点3.Spring的体系结构 (重点★★★) :3.1 Core Container (核心容器) ★★★Beans模块 (★★★) : BeanFactoryCore核心模块 (★★★) : IOCContext上下文模块 (★★★) : ApplicationContextContext-support模块 (★★★)SpE…...

项目开发维护技术文档(梳理总结中)

目录 项目名称——惠誉灵境 一、项目背景 二、架构设计 1.技术栈 2.架构图 3.代码结构 三、模块划分 1.平台首页 2.登录模块 3.系统模块 &#xff08;1&#xff09;系统首页 &#xff08;2&#xff09;组织架构 &#xff08;3&#xff09;权限管控 ①角色管理 &#xff08;4&am…...

【接口测试】Apifox实用技巧干货分享

前言 不知道有多少人和我有着这样相似的经历&#xff1a;从写程序只要不报错就不测试&#x1f60a;&#xff0c;到写了程序若是有bug就debug甚至写单元测试&#xff0c;然后到了真实开发场景&#xff0c;大哥和你说&#xff0c;你负责的功能模块的所有接口写完要测试一遍无误在…...

车联网架构设计(一)_消息平台的搭建

车联网是物联网的一个主要应用方向&#xff0c;车辆通过连接车联网平台&#xff0c;实时进行消息的交互&#xff0c;平台可以提供车辆远程控制&#xff0c;故障检测&#xff0c;车路协同等各方面的功能。 我在车联网行业从事了很长时间的技术工作&#xff0c;参与了整个车联网…...

(蓝桥杯)1125 第 4 场算法双周赛题解+AC代码(c++/java)

题目一&#xff1a;验题人的生日【算法赛】 验题人的生日【算法赛】 - 蓝桥云课 (lanqiao.cn) 思路&#xff1a; 1.又是偶数&#xff0c;又是质数&#xff0c;那么只有2喽 AC_Code:C #include <iostream> using namespace std; int main() {cout<<2;return 0; …...

也可Adobe Animate

Animate CC 由原Adobe Flash Professional CC 更名得来&#xff0c;2015年12月2日&#xff1a;Adobe 宣布Flash Professional更名为Animate CC&#xff0c;在支持Flash SWF文件的基础上&#xff0c;加入了对HTML5的支持。并在2016年1月份发布新版本的时候&#xff0c;正式更名为…...

【面试HOT200】回溯篇

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于【CodeTopHot300】进行的&#xff0c;每个知识点的修正和深入主要参…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...