Docker 从入门到精通(二) 搭建本地仓库

2023-11-19

导读 docker 是Linux下面的容器技术,是目前最火的开源技术之一,上次我们了解了docker的基础知识,docker的容器,仓库,镜像等,接下来我们就一起来看下本地仓库的搭建吧。

一,本地安装
# yum install -y python-devel libevent-devel python-pip gcc xz-devel 

# pip install docker-registry

也可以从 docker-registry (https://github.com/docker/docker-registry)项目下载源码进行安装。

二,使用官方 registry 镜像
# docker run -d -p 5000:5000 registry #将使用官方的 registry 镜像来启动本地的私有仓库,但是并没有启动,只是为你创建好

默认情况下,会将仓库存放于容器的 /tmp/registry 目录下,如果容器被删除,则数据也会丢失,所以我们可以通过 -v 参数来将镜像文件存放在本地的指定路径:

# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry  
 
# docker start $(docker ps -l | grep registry | awk '{print $1}')    #启动仓库

要在本地仓库上传镜像,首先需要标记一个镜像,以下标记 busybox ,由于 busybox 镜像比较小,没有的建议先下载:

# docker pull buxybox
 
# docker tag busybox 192.168.0.232:5000/busybox    # 对 buxybox 镜像进行标记
 
# docker images  #查看标记的镜像
 
# docker push 192.168.0.232:5000/busybox   #然后开始上传吧
2016/06/14 11:01:17 Error: Invalid registry endpoint https://192.168.0.232:5000/v1/: Get https://192.168.0.232:5000/v1/_ping: dial tcp 192.168.0.232:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.0.232:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/192.168.0.232:5000/ca.crt 

呵呵,报错了!因为Docker从1.3.X之后默认docker registry使用的是https,所以当用docker pull命令下载远程镜像时,如果远程docker registry是非https的时候就会报上面的错误。

为了解决这个问题需要在启动docker server时增加启动参数:

# vim /etc/sysconfig/docker #ip 换为自己的ip

other_args="--insecure-registry 192.168.0.232:5000" #默认为空的

# service docker restart #重启docker

# docker start $(docker ps -l | grep registry | awk '{print $1}') #启动 registry

# docker push 192.168.0.232:5000/busybox #然后重新上传吧,这次肯定成功

# curl http://192.168.0.232:5000/v1/search #查看上传的镜像
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/busybox"}]}

注意: /v1 代表 registry 的版本,使用 docker pull 安装的默认为 v1 版本。

测试:

使用另一台机器 pull 本地的私有仓库,但是要在 private registry 上使用 SSL,另一种就是强制使用普通方式,仍然像上面一样,在配置文件中加上以下参数:

other_args="--insecure-registry 192.168.0.232:5000"

重启 docker 服务,然后 pull:

[root@sta docker]# docker pull 192.168.0.232:5000/busybox
Pulling repository 192.168.0.232:5000/busybox
437595becdeb: Download complete
437595becdeb: Pulling image (latest) from 192.168.0.232:5000/busybox
Status: Image is up to date for 192.168.0.232:5000/busybox:latest


本文转载自:http://www.linuxprobe.com/docker-repo-local.html

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

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

Docker 从入门到精通(二) 搭建本地仓库 的相关文章

  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • gnome-terminal 新选项卡,使用别名作为要执行的命令

    我已经创建了一个别名 bashrc文件如下 alias myproject cd Desktop myproject 当我重新启动终端时保存文件后 输入myproject带我到项目目录 但是当我尝试使用别名作为新的命令参数时gnome te
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • 错误:NVIDIA-SMI 失败,因为无法与 NVIDIA 驱动程序通信

    NVIDIA SMI 抛出此错误 NVIDIA SMI 失败 因为无法与 NVIDIA 通信 司机 确保安装了最新的 NVIDIA 驱动程序并且 跑步 我清除了 NVIDIA 并按照提到的步骤重新安装了它here https askubun
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path
  • “grep -q”的意义是什么

    我正在阅读 grep 手册页 并遇到了 q 选项 它告诉 grep 不向标准输出写入任何内容 如果发现任何匹配 即使检测到错误 也立即以零状态退出 我不明白为什么这可能是理想或有用的行为 在一个程序中 其原因似乎是从标准输入读取 处理 写入
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit

随机推荐

  • IDEA常用插件之类Jar包搜索Maven Search

    文章目录 IDEA常用插件之类Jar包搜索Maven Search 说明 安装插件 使用方法 1 搜索自己要搜的jar包 2 根据类名搜索 IDEA常用插件之类Jar包搜索Maven Search 说明 它可以帮助用户快速查找和浏览Mave
  • 校园网设计超超超级详细的配置来了(以河北科技大学为例)

    1 场景描述 1 1部门 信息学院 电气学院 机械学院 信息学院有计算机系 网络系 电子系 电气学院有电气系 自动化系 测控系 机械学院有机械系 材料科学系 机械电子工程系 1 2 建筑物分布 信息楼 电气楼 机械楼 网管中心 1 3 申请
  • 如何在GitHub上大显身手?

    码农朋友们都知道 gitHub是一个面向开源及私有软件项目的托管平台 上面托管了众多的优秀的项目 比如linux内核源码 git源码 机器学习框架tensorflow等等 当然 除了这些顶尖项目外 还有海量的高手开发的优秀项目 所有的这些项
  • 06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)

    文章目录 1 主要的窗体类及其用途 2 窗体类重要特性的设置 2 1 setAttribute 函数 2 2 setWindowFlags 函数 2 3 setWindowState 函数 2 4 setWindowModality 函数
  • 四元数的差、对数、指数、幂以及差值

    概要 对于四元数的学习基本上都是参照 3D数学基础 图形与游戏开发这本书的内容的 对于这本书前面的部分还是很好理解的 但是从四元数的差这里开始 就过于抽象了 不配合实例很难去理解 因此 这一段被我单独提取出来 在实践中进一步去理解 差 对数
  • 【云原生】Docker环境安装

    文章目录 一 安装准备 1 前提条件 2 查看系统内核 3 查看已安装的CentOS版本信息 二 CentOS7安装docker 1 安装需要的软件包 2 设置docker下载镜像 3 更新yum软件包索引 4 安装docker ce 5
  • git cmd!!!!!!!

    cd e 进入磁盘 mkdir gitdemo 创建目录 cd gitdemo 进入目录 pwd 显示目录 git init 把这个目录变成Git可以管理的仓库 如果你没有看到 git目录 那是因为这个目录默认是隐藏的 用ls ah命令就可
  • 【Docker系列】从头学起 Docker——docker --help命令详解

    文章目录 前言 一 学会使用 docker help 命令 二 docker help进阶方法 总结 前言 当你在docker容器时相信docker help一定可以帮助到你 一 学会使用 docker help 命令 即使忘记相关命令 也
  • Linux操作系统安全配置

    Linux操作系统安全配置 一 服务相关命令 systemctl enable 服务名 开机自启动 systemctl disable 服务名 禁用开机自启动 systemctl stop 服务名 停止服务 systemctl start
  • 利用 FFmpeg 批量自动生成视频封面

    最近有一个 H5 页面的需求 里面有非常多的视频 由于视频在 H5 中播放缓冲较慢 因此需要在每一个视频前面加上一个封面 从而来避免白屏的情况 主要使用的 ffmpeg 的语法 ffmpeg i input mp4 ss 00 00 00
  • 小白能看懂等Tacotron 中文语音合成实践

    简介 参考博客1 基于Tacotron汉语语音合成的开源实践 参考博客2 Tacotron中文语音合成 通过调研发现 针对TTS的开源项目主要是针对英文的 而中文方面资料相对较少 上面两个为本项目的主要参考 已有的信息就不进行重复了 同时感
  • 第一节:Keras深度学习框架之环境搭建

    请在学习本节前阅读我们之前的预热课程 卷积神经网络的框架解读 上 BBM的开源HUB的博客 CSDN博客 卷积神经网络的框架解读 下 BBM的开源HUB的博客 CSDN博客 从本节开始 我们将进入到Keras的详细介绍和代码精读 为开始我们
  • 如何设置淘宝镜像?

    在国外 受网速影响比较大 https registry npmjs org 1 配置 npm 为淘宝镜像 npm config set registry https registry npm taobao org 2 安装 cnpm 为淘宝
  • jdbc mysql url utf8_JDBC获得数据库连接时写在URL上的?useUnicode=true&characterEncoding=utf-8的意义...

    JDBC作为Java与数据库的桥梁 是JavaWeb后台的基础之一 需要我们熟悉其原理与用法 JDBC一般的使用步骤为 1 运用反射加载驱动程序 如Class forName com mysql jdbc Driver 2 获得数据库连接对
  • JVM类加载机制详解(一)JVM类加载过程

    首先Throws 抛出 几个自己学习过程中一直疑惑的问题 1 什么是类加载 什么时候进行类加载 2 什么是类初始化 什么时候进行类初始化 3 什么时候会为变量分配内存 4 什么时候会为变量赋默认初值 什么时候会为变量赋程序设定的初值 5 类
  • stm32编码器模式

    选择编码器接口模式的方法是 如果计数器只在TI2的边沿计数 则置TIMx SMCR寄存器中的 SMS 001 如果只在TI1边沿计数 则置SMS 010 如果计数器同时在TI1和TI2边沿计数 则 置SMS 011 TI1FP1和TI2FP
  • 游戏开发unity编辑器扩展知识系列:一个方法添加至多个MenuItem

    代码如下 用多个MenuItem标记方法就可以了 MenuItem GameObject 生成带图片的Image false 100 MenuItem Assets 生成带图片的Image static void GenImageGameO
  • 解决electron-builder打包很慢的问题

    由于网络原因 各种包下载不下来 导致出错 1 打包时下载 electron v10 1 4 win32 x64 文件失败 解决方法 直接在 淘宝的文件库 下载对应版本文件 下载完成后放在C Users renlei AppData Loca
  • 要求输入月份,判断该月所处的季节并输出季节(假设:12、1、2 月为冬季,依次类推)

    public class Task 10101003 03 public static void main String args Scanner input new Scanner System in System out println
  • Docker 从入门到精通(二) 搭建本地仓库

    导读 docker 是Linux下面的容器技术 是目前最火的开源技术之一 上次我们了解了docker的基础知识 docker的容器 仓库 镜像等 接下来我们就一起来看下本地仓库的搭建吧 一 本地安装 yum install y python