基于Docker搭建私有镜像仓库

通常我们在docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用,显然这在某些场景下是不适用的,比如某些互金的隐私项目,或者是公司完全处于内网状态不能访问外网,再或者你想个性化定制某些配置等等等,所以这就需要用到私有存储库了,今天我们就基于registry镜像搭建属于我们自己的私有仓库。

1、安装指令

docker pull registry

默认拉取最新版:

2、配置私有仓库地址

vim /etc/docker/daemon.json

输入如下参数,注意修改为自己的ip地址:

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


:wq 保存退出,然后我们重启启动一下 docker

systemctl restart docker

3、创建容器

docker run -d -p 5000:5000 --name registry docker.io/registry

部分参数说明:

  • -d:让容器在后台运行
  • -p:指定容器内部使用的网络端口映射到我们使用的主机上
  • –name:指定容器创建的名称

4、重新加载配置

sudo systemctl daemon-reload

然后浏览器访问:http://10.211.55.4:5000/v2/_catalog

如果访问不到,尝试关闭防火墙:

systemctl stop firewalld

如果还是访问不不到,可以重启一下docker

sudo systemctl restart docker

然后重新运行一下容器。

5、验证上传镜像到私有仓库

我们使用HelloWorld镜像进行测试,首先先拉取一下:

docker pull hello-world


拉取之后我们看一下镜像名称及版本:

至此我们就有了一个hello-world镜像,接下来我们使用 push 指令将镜像推送到刚刚搭建的registry中:

# 标记hello-world该镜像需要推送到私有仓库
docker tag hello-world:latest 127.0.0.1:5000/hello-world:latest# 通过push指令推送到私有仓库
docker push 127.0.0.1:5000/hello-world:latest


再来访问:http://10.211.55.4:5000/v2/_catalog

我们可以看到私有仓库目录已经有刚刚推送上去的 hello-world 镜像了。

6、验证从私有仓库下载镜像

验证完了上传,我们再来测试一下下载镜像:

# 格式如下:
docker pull 127.0.0.1:5000/镜像名称:镜像版本号# 以hello-world为例:
docker pull 127.0.0.1:5000/hello-world


到这可能有的小伙伴就有疑惑了,你这通过ip能拉取吗,我看你一直用的127.0.0.1,毕竟私有仓库搭建完是要给别人用的嘛~

那么我们就测试一下:

docker pull 10.211.55.4:5000/hello-world:latest


如上图所示,通过ip也是可以拉取成功的,但是在这再额外补充一下,有的小伙伴可能提示如下:

Trying to pull repository 10.211.55.4:5000/hello-world ...
Get https://10.211.55.4:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这种显然是拉取失败了,提示大致就是,尝试从https上拉取,但是返回的是http响应,如何解决呢?

我们可以通过如下进行处理一下,xxx修改为自己的ip地址:

echo '{ "insecure-registries":["xxx.xxx.xxx.xxx:5000"] }' > /etc/docker/daemon.json

其实如果你是按上我上边这些步骤下来是不会有问题的,在步骤2配置私有仓库地址时,其实我们已经配置了insecure-registries,但是配置后我们需要重启启动一下docker才可以生效,毕竟是配置了系统文件嘛~

ok,至此整个搭建过程完毕~

— END —

推荐阅读:

基于Docker的Redis集群搭建

Docker安装Nginx

基于Docker方式实现Elasticsearch集群

Docker中Maven私服的搭建

基于Docker搭建Gitlab代码存储

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

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

相关文章

[js] 说说你对js沙箱的理解,它有什么应用场景?

[js] 说说你对js沙箱的理解,它有什么应用场景? 在微前端有用到js沙箱,例如qiankun框架,主应用的js运行和子任务的js运行不会相互影响,是使用es6的proxy来实现的个人简介 我是歌谣,欢迎和大家一起交流前后…

volatile理解了吗?

到这里大家感觉自己对volatile理解了吗? 如果理解了,大家考虑这么一个问题:ReentrantLock(或者其它基于AQS实现的锁)是如何保证代码段中变量(变量主要是指共享变量,存在竞争问题的变量&…

Linux|CentOS下配置Maven环境

1、下载maven包 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz如果提示 wget: 未找到命令,请尝试如下指令安装 wget yum -y install wget2、解压下载的maven压缩吧 tar -xzvf apache-maven-3.3.…

[js] 纯函数和函数式编程有什么关系?

[js] 纯函数和函数式编程有什么关系? 函数式编程是一种编程思想,纯函数是这种思想的基本要实现函数式编程,我们所封装的方法应该是抽象的,应该是和外部状态无关系的,也就需要是纯函数的,这样才能保证抽象的…

PHP 超级全局变量

PHP 超级全局变量列表: $GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION 转载于:https://www.cnblogs.com/alexguoyihao/p/9086857.html

[js] 为什么要用纯函数?

[js] 为什么要用纯函数? 在此之前要先了解什么是纯函数,简单来说纯函数的定义有两个: 1.返回的结果只依赖于传入的参数。 2.执行过程中不产生副作用。 在这里就需要了解到什么是副作用 1.改变了外部变量或者对象属性 2.触发任何外部进程 3.发…

CentOS中安装Docker步骤

1、安装仓库所需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm22、设置yum加速源 yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo3、安装docker-ce yum install docker-ce docker-ce-cli containerd.io4、启动dock…

LeetCode 22. 括号生成(Generate Parentheses)

题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n 3,生成结果为: ["((()))","(()())","(())()","()(())",&qu…

[js] 使用js实现一个图片剪裁的功能

[js] 使用js实现一个图片剪裁的功能 /** * 裁切图片* param imgUrl 原始图片路径* param x,y,width,height 从点[x, y]开始,将宽度width,高度height的区域裁切下来* tips:需要运行于服务器环境下切图片为同域*/ function clipImage(imgUrl, x, y, width…

Docker+Jenkins+Git+GitLab实现DevOps

先了解一下Jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,提供了数百个插件来支持构建,部署和自动化任何项目。我们可以使用Jenkins结合常用的版本控制工具(git、svn等)来实现自动部署项目,比如说我们从本地上传代码到G…

[js] 使用for-in语句能保证遍历对象的顺序吗?如果不能那为什么?如果可以那又如何保证?

[js] 使用for-in语句能保证遍历对象的顺序吗?如果不能那为什么?如果可以那又如何保证? Chrome Opera 的 JavaScript 解析引擎遵循的是新版 ECMA-262 第五版规范。因此,使用 for-in 语句遍历对象属性时遍历顺序并非属性构建顺序。…

深入理解Flask中的上下文

https://blog.csdn.net/barrysj/article/details/51519254 1.AppContext类即是应用上下文,可以看到里面只保存了几个变量,其中比较重要的有: app是当前web应用对象的引用,如Flask;还有g,用来保存需要在每个…

毕业两年的大专生程序员工作总结(java后端)

文章目录前言这一年做了啥去年的学习清单今年的学习清单第三年的规划最后唠叨的话前言 如题,这是我毕业第二年的工作总结,对第一年工作总结感兴趣的请戳这《毕业一年的大专生程序员工作总结》,再简单介绍一下我以及这个系列的文章。 关于我…

[js] 写个方法获取屏幕的DPI

[js] 写个方法获取屏幕的DPI (function() {var arrDPI new Array();if ( window.screen.deviceXDPI) {arrDPI[0] window.screen.deviceXDPI;arrDPI[1] window.screen.deviceYDPI;}else {var tmpNode document.createElement( "DIV" );tmpNode.style.cssText &qu…

Docker开启远程安全访问

一、编辑docker.service文件 vi /usr/lib/systemd/system/docker.service找到 [Service] 节点,修改 ExecStart 属性,增加 -H tcp://0.0.0.0:2375 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:23…

acm--1004

问题描述再次比赛时间!看到气球在四周漂浮,多么兴奋。但要告诉你一个秘密,评委最喜欢的时间是猜测最流行的问题。比赛结束后,他们会统计每种颜色的气球并找出结果。今年,他们决定离开这个可爱的工作给你。输入输入包含…

[js] promise的构造函数是同步执行还是异步执行,它的then方法呢?

[js] promise的构造函数是同步执行还是异步执行,它的then方法呢? promise构造函数是同步执行的,then方法是异步执行的。个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起…

Netty入门篇-从双向通信开始

百度百科描述 Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NIO的客户、服务器…

asp.net 页面静态化

页面静态化,有三种方式 伪静态 真静态,折中法 现在我做的是折中发 创建一个asp.net 页面, 连接跳转到还未生成的页面 创建HttpHandle类 using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;/// <summary>/// HttpHa…

[js] 内存泄漏和内存溢出有什么区别

[js] 内存泄漏和内存溢出有什么区别 内存泄露:用动态储存分配函数内存空间&#xff0c;在使用完毕后未释放&#xff0c;导致一直占据该内存单元,直到程序结束。内存溢出:不顾堆栈分配的局部数据块大小,向数据块中写入过多数据&#xff0c;导致数据越界,结果覆盖了别的数据。常…