博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker基础-13-如何发布一个镜像到私有的docker仓库
阅读量:4302 次
发布时间:2019-05-27

本文共 2151 字,大约阅读时间需要 7 分钟。

       本篇来介绍如何搭建自己的Docker registry,用来存储和分发自己私人的镜像文件。前面一篇使用docker push默认是发布镜像到hub.docker.com这个公有的镜像站点,这篇主要介绍私有镜像站点的在本地的搭建过程。

 

准备第二个Linux虚拟机

前面我们只准备了一台linux虚拟机用来练习和学习Docker,现在重新克隆一台虚拟机,这样新的虚拟机就不再需要安装docker环境了。克隆完了,两台虚拟机都开机,保证IP地址是不一样的就行。例如,我这里有一台192.168.24.128是我用来学习docker的虚拟机,第二台IP是192.168.24.129是我克隆出来准备做私有的registry服务。

 

拉取docker registry镜像

由于我是克隆出来机器,里面安装了docker,我们先启动docker服务,然后使用docKer pull registry拉取一个镜像到本地。

看看这个镜像多大

为了测试,我这台机器只留registry功能,我利用docker image rm 或者docker rmi命令删除其他不相干的镜像。

启动registry

启动registry实际上就是启动一个容器,这个registry其实和hub.docker.com是一样的功能,只不过这个私有的registry是供给公司内部使用,不对外访问罢了。使用下面的命令就启动了registry服务(运行在一个容器中)。

上面可以看到两个端口都是5000,简单说一下,一个是linux虚拟机也就是0.0.0.0:5000,这个5000是这个虚拟机本身的端口,第二个是5000是这个registry容器里的端口是5000. 以后再学习docker网络这块要学习这些。我们要明白,知道了一个机器IP和程序的端口号,就能在网络里访问这个程序的服务。

 

验证两台机器网络是否连接

我们有两台linux机器,第一个要验证虚拟机24.128是否能ping 24.129

接下来验证registry这台机器提供的5000端口是否可用。如果没有安装telnet组件,可以使用yum install –y telnet来安装。

如果出现这个,说明24.129这台机器提供的registry服务是可用的。

 

发布镜像到私有registry

这里,还是使用我们在原来24.128这台机器上的hello-docker的例子来build 一个image,先通过docker file build出来,然后使用push命令

这次使用docker build命令和之前不一样,是不是,之前在tag这里填写的参数是我的hub.docker.com的用户ID, 现在我们搭建了私有的镜像仓库,这个tag就要写成192.168.24.129:500了,这个要注意下。

接下来使用docker push 来看看效果

这个报错什么意思呢,字面意思是一个HTTP协议的服务器给了一个HTTP协议响应到一台HTTPS协议的客户端,意思是服务器是HTTP协议,客户端是HTTPS协议,这个是被任务我们私有的registry是不可信任的。接下来还需要一个步骤来解决这个报错。

 

第一在目录 /etc/docker下编辑一个daemon.json文件

使用vi或者vim(管理员权限)打开,打开内容是如下,这个内容是我们前面介绍如何改成中国地区的docker镜像站点的配置。

我们修改内容如下

{    "registry-mirrors": ["https://registry.docker-cn.com"],    "insecure-registries":["192.168.24.129:5000"]}

保存退出,然后执行再编辑一个文件,让这个修改永久有效。

我们编辑vim /lib/systemd/system/docker.service这个文件,添加一下红圈这一行,让每次docker服务重启之后都去加载/etc/docker/daemon.json文件

保存退出,执行sudo service docker restart命令,然后执行docker push试一下

看到Pushed,说明这个镜像发布成功,由于没有UI界面,我们怎么样去判断确实发布到了24.129这台机器上呢?

 

打开浏览器,输入地址 ,打开docker registry 的API文档页面。当前页面搜索Listing Image Tags,查询到这个API。

这里参数name就是我们的image的名称192.168.24.129:5000/hello-docker中的hello-docker,

下面我们在浏览器发送这个请求试试,看看什么结果。

如果要查询全部pushed的镜像,我们可以输入这个API。

关于介绍如何搭建本地私人的docker registry服务就介绍到这里。这篇,如果你们公司需要你研究docker,并要求使用docker,你肯定要去搭建一个私有的docker registry服务。如果要管理registry,那么就必要去学习registry的一些常用API。作为docker基础,学习到如何搭建服务就可以,可以跳过学习这些API文档。

 

转载地址:http://kkows.baihongyu.com/

你可能感兴趣的文章
【2020-3-21】Mac安装Homebrew慢,解决办法
查看>>
influxdb 命令行输出时间为 yyyy-MM-dd HH:mm:ss(年月日时分秒)的方法
查看>>
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Mac 下docker路径 /var/lib/docker不存在问题
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(二) 基础命令
查看>>
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>
JDK1.8-Stream API使用
查看>>
cant connect to local MySQL server through socket /tmp/mysql.sock (2)
查看>>
vue中的状态管理 vuex store
查看>>
Maven之阿里云镜像仓库配置
查看>>
Maven:mirror和repository 区别
查看>>
微服务网关 Spring Cloud Gateway
查看>>
SpringCloud Feign的使用方式(一)
查看>>
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>