用 registry 搭建 docker 本地镜像仓库实战记录

2023-12-17

目标:掌握使用 docker commit , docker save, docker load, docker push 等命令 自制本地镜像仓库 local registry 及上传下载镜像
1.使用 docker commit 命令制作 tomcat 镜像,最新版的 tomcat 启动后,登录 localhost:8080 不会出现欢迎页面,原因是 webapps 目录是空的,所以,我对容器做了如下处理:

  1. 启动 tomcat 容器,将 webapps.dist 目录下的所有内容剪切到 webapps目录下,并删除默认的欢迎页面
docker run -it --name my-web tomcat /bin/bash
mv webapps.dist/* ./webapps/
rm webapps/ROOT/index.jsp
  1. 修改启动脚本 /usr/local/tomcat/bin/catalina.sh , 让脚本启动后自动生成 index.html 。在 脚本的 echo “Tomcat started.” 行后面加上一行: echo “hello, $(hostname -i)” > /usr/local/tomcat/webapps/ROOT/index.html 即可
    在这里插入图片描述
echo "hello, $(hostname -i)" > /usr/local/tomcat/webapps/ROOT/index.html
  1. 使用 docker commit 命令将 上面修改后的 容器保存成镜像
docker commit my-web test/tomcat:t1

在这里插入图片描述
4. 使用 docker save 命令将 test/tomcat:t1 镜像保存成 本地 tar 文件
在这里插入图片描述

docker save -o tomcat-t1.tar test/tomcat:t1
  1. 将 tomcat-t1.tar 文件 传到 worker3 服务器上
scp tomcat-t1.tar root@192.168.250.188:/root/

在这里插入图片描述
6. 在 worker3 服务器 加载 test/tomcat:t1 镜像

docker load -i tomcat-t1.tar
docker images

在这里插入图片描述
7. 拉取 registry 镜像 ,运行 registry 容器搭建 本地 镜像仓库

### registry 是一个镜像分发服务
### 关于 registry 的用法 可以参考官方文档: https://distribution.github.io/distribution/about/deploying/ 
docker run -d --hostname local-registry --name my-image-repository --restart=always -p 5000:5000 -v /mnt/images/repository/:/var/lib/registry/docker/registry/ registry

在这里插入图片描述
8. 在 /etc/hosts 文件里面 配置 192.168.250.188 local-registry

### 192.168.250.188 为 worker3 服务器的 ip
sed -i '4a 192.168.250.188 local-registry' /etc/hosts

在这里插入图片描述
9. 为镜像 test/tomcat:t1 打一个新标签 ,然后将 镜像 push 到本地镜像仓库

### 第7步中设置的 --hostname local-registry 就是 本地镜像仓库的 主机名称,5000 是 registry 服务的端口 
docker tag test/tomcat:t1 local-registry:5000/local/tomcat:t1 
docker push local-registry:5000/local/tomcat:t1

在这里插入图片描述
注意:这一步报了一个错误 ‘Get “https://local-registry:5000/v2/”: http: server gave HTTP response to HTTPS client’ , 这个报错 的原因是本地仓库使用的 http协议,docker 默认的是 https 安全协议,解决这个问题,只需要在 /etc/docker/daemon.json 文件里面增加 一个 “insecure-registries”: [“local-registry:5000”] 即可

### 只需要 加 "local-registry:5000" 这一个就可以了,另外两个是其它的镜像仓库
cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.250.66:5000","my-repository:5000","local-registry:5000"]
}
### 重启 docker 服务
systemctl daemon-reload
systemctl restart docker.service

在这里插入图片描述
10. 将 之前的镜像 push 到本地镜像仓库,删除 镜像 再从本地镜像仓库拉取镜像

docker push local-registry:5000/local/tomcat:t1
docker images
docker rmi local-registry:5000/local/tomcat:t1
docker pull local-registry:5000/local/tomcat:t1

在这里插入图片描述
11. 在 worker3 服务器上 用 镜像 local-registry:5000/local/tomcat:t1 启动容器

docker run -it --name my-web local-registry:5000/local/tomcat:t1 /bin/bash 
###在容器里面启动 tomcat
/usr/local/tomcat/bin/catalina.sh start
### 使用 curl 命令测试 localhost:8080
curl localhost:8080

在这里插入图片描述
说明:

  1. registry 是一个镜像分发服务,要充分理解 “docker run -d --hostname local-registry --name my-image-repository --restart=always -p 5000:5000 -v /mnt/images/repository/:/var/lib/registry/docker/registry/ registry” 的含义
    例如,–hostname 指定的 是 本地镜像仓库 的 主机名,/mnt/images/repository/ 是镜像在 服务器上的存储位置
    在这里插入图片描述
  2. 如果要在其它节点上 使用 local-registry:5000 镜像仓库,其它节点机器上以下两个地方需要做好相关配置:
    /etc/hosts 文件要配置 192.168.250.188 local-registry
    /etc/docker/daemon.json 文件需要配置
    {
    “insecure-registries”: [“local-registry:5000”]
    }

后面会再写一篇文章介绍 在 内网环境 的 k8s 集群 中 如何使用 docker 的本地 镜像仓库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 registry 搭建 docker 本地镜像仓库实战记录 的相关文章

随机推荐

  • MySQL数据库 DCL

    目录 DCL概述 管理用户 权限控制 DCL概述 DCL英文全称是 Data Control Language 数据控制语言 用来管理数据库用户 控制数据库的访 问权限 管理用户 1 查询用户 select from mysql user
  • 【算法刷题】每日打卡——动态规划(1)

    背包问题 例题一 有 N件物品和一个容量是 V 的背包 每件物品只能使用一次 第 i件物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N V
  • 机器学习 高维数据可视化:t-SNE 降维算法

    作者简介 人工智能专业本科在读 喜欢计算机与编程 写博客记录自己的学习历程 个人主页 小嗷犬的个人主页 个人网站 小嗷犬的技术小站 个人信条 为天地立心 为生民立命 为往圣继绝学 为万世开太平 本文目录 t SNE 简介 sklearn 中
  • 【ortools源码系列11】 time_limit h头文件功能和源码分析

    ortools源码系列 time limit h头文件功能和源码分析 文章目录 ortools源码系列 time limit h头文件功能和源码分析 TimeLimit 功能 TimeLimit 源码 SharedTimeLimit 功能
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • 3、如何在 Python 中注释代码?

    注释是编程中的重要元素 它们用于解释代码的目的 功能以及实现方式 在Python中 注释是一种文本 用于提高代码的可读性 并帮助其他开发者理解你的代码 在本文中 我将详细解答如何在Python中注释代码 包括单行注释 多行注释 注释的最佳实
  • 1、什么是 Python?

    Python是一门高级编程语言 它是一种通用 解释型 面向对象的语言 以其简洁 清晰的语法和强大的功能而备受程序员欢迎 在学习Python之前 让我们一起来了解一下这门语言的基本特性和应用领域 Python的起源和命名 Python的故事始
  • 基于java的聊天系统(源代码+讲解视频+数据库)

    毕业论文题目 基于Java的聊天系统设计与实现 摘要 本论文主要探讨了基于Java的聊天系统的设计与实现 通过对现有聊天系统的研究 我们提出了一种基于Java的聊天系统架构 该架构包括用户管理 消息传输 消息存储和消息显示等模块 通过使用J
  • 基于java的宿舍管理系统(源代码+讲解视频+数据库)

    摘要 本文设计与实现了一套基于Java的宿舍管理系统 通过研究现有宿舍管理方式存在的问题和需求分析 本文利用Java语言及相关技术 设计了系统的总体架构和功能模块 并实现了系统的关键功能 包括学生管理 宿舍信息管理 报修管理 楼层巡查管理等
  • LeetCode326. Power of Three

    文章目录 一 题目 二 题解 一 题目 Given an integer n return true if it is a power of three Otherwise return false An integer n is a po
  • 某60内网渗透之frp实战指南2

    内网渗透 文章目录 内网渗透 frp实战指南2 实验目的 实验环境 实验工具 实验原理 实验内容 frp实战指南2 实验步骤 1 确定基本信息 2 查看frp工
  • 【Git】解决fatal: unable to access..Failure when receiving data from the peer或者OpenSSL SSL_read: Connect

    今天拉取仓库的代码时 报错如下 fatal unable to access https github com Itfuture zifeiYu ZifeiChat git Failure when receiving data from
  • 叫好又叫座!谋定论道·经信研究:船舶屡获韩国船东新船订单

    叫好又叫座 谋定论道 经信研究 船舶屡获韩国船东新船订单 新闻中国采编网 中国新闻采编网 中国企业家手机报 谋定研究中国智库网 国研智库 国情讲坛 商协社团 谋定论道 经信研究 哲商对话 万赢信采编 近日 中国船舶集团有限公司旗下中船黄埔文
  • 2、Python 的特点是什么?

    Python是一门备受欢迎的编程语言 其特点之一是在设计和发展过程中充分考虑了开发者的便利性和代码的可读性 下面将详细介绍Python的主要特点 帮助初学者更好地了解这门语言 1 简洁而清晰的语法 Python以其简洁而清晰的语法而著称 相
  • 【华为数据之道学习笔记】5-5结构化数据入湖

    结构化数据是指由二维表结构来逻辑表达和实现的数据 严格遵循数据格式与长度规范 主要通过关系型数据库进行存储和管理 触发结构化数据入湖的场景有两种 第一 企业数据管理组织基于业务需求主动规划和统筹 第二 响应数据消费方的需求 结构化数据入湖过
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 第二百零九回

    文章目录 1 概念介绍 2 使用方法 2 1 NumberPicker 2 2 CupertinoPicker 3 示例代码 4 内容总结 我们在上一章回中介绍了 如何在任意位置显示PopupMenu 相关的内容 本章回中将介绍如何实现Nu
  • 【打造优质CSDN热榜评论区】让AI给评论打分!

    大家好啊 我是豆小匠 1 专栏背景 作为CSDN的老用户 自从CSDN强调要打造优质评论区后 热榜的评论区仍旧有进步空间 因此在这个专栏会结合AI 探索一些方法来提高评论区的质量 这个专栏仅为博主的想法 作为技术学习使用 与官方无关联 2
  • 数据结构 数组与字符串

    介绍 数组的基础 定义和声明 基本定义 在C语言中 数组可以被定义为一系列相同类型的元素的集合 每个元素在内存中连续排列 可以通过索引 通常是从0开始的整数 来访问 数组的声明 数组在C语言中的声明包括元素类型 数组名和大小 例如 声明一个
  • 用 registry 搭建 docker 本地镜像仓库实战记录

    目标 掌握使用 docker commit docker save docker load docker push 等命令 自制本地镜像仓库 local registry 及上传下载镜像 1 使用 docker commit 命令制作 to