扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go学习
  • Go学院

    • Go小课
    • Go视界
    • Go小考
    • Go实战
  • Go资源

    • 优质课程
    • 在线宝典
    • 资源下载
    • 帮找资源
训练营 🔥
  • Go体系课&实战训练营
  • 升值加薪陪跑训练营
Go求职
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
  • 求职服务

    • 内推互助
    • 求职助力
    • 内推公司
Go友会
  • 城市
  • 校园
推广返佣
  • 返佣排行
  • 返佣规则
  • 推广学院
实验区
  • Go周边
  • Go宝典

    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
更多
  • 用户中心

    • 我的信息
    • 我的返佣
    • 我的消息
  • 玩转星球

    • 星球介绍
    • 星主权益
    • 吐槽专区
    • 成长记录
  • 合作交流

    • 商务合作
    • 讲师招募
    • 生态伙伴
author-avatar

GOLANG ROADMAP


首页
Go学习
  • Go学院

    • Go小课
    • Go视界
    • Go小考
    • Go实战
  • Go资源

    • 优质课程
    • 在线宝典
    • 资源下载
    • 帮找资源
训练营 🔥
  • Go体系课&实战训练营
  • 升值加薪陪跑训练营
Go求职
  • 求职刷题

    • 企业题库
    • 面试宝典
    • 求职面经
  • 求职服务

    • 内推互助
    • 求职助力
    • 内推公司
Go友会
  • 城市
  • 校园
推广返佣
  • 返佣排行
  • 返佣规则
  • 推广学院
实验区
  • Go周边
  • Go宝典

    • 推荐图书
    • 精品博文
  • Go开源

    • Go仓库
    • Go月刊
更多
  • 用户中心

    • 我的信息
    • 我的返佣
    • 我的消息
  • 玩转星球

    • 星球介绍
    • 星主权益
    • 吐槽专区
    • 成长记录
  • 合作交流

    • 商务合作
    • 讲师招募
    • 生态伙伴
  • 宝典简介

    • Docker简明教程
    • Docker 简介
  • Docker 核心技术

  • Docker 快速入门

  • Docker run 参数详解

  • 高级网络配置

  • Docker 私有仓库
  • 其他

扫码订阅《 》或入驻星球,即可阅读文章!

Docker 私有仓库


jiajially

如果你想玩转docker,一个私有仓库是必不可少的。 本文将会搭建一个简易的私有仓库以供参考。

本文例子的主机地址是

192.168.4.121

####第一步 获取官方工具

官方为我们提供了一个创建仓库的工具,它是以镜像文件形式存储在官方仓库中,我们可以把它拉下来用。

$ sudo docker pull registry

# 第二步 启动仓库

我们现在启动它,指定主机5000端口绑定

$ sudo docker -d  -p 5000:5000 registry

# 第三步 验证

这时 输入

$ curl http://192.168.4.160:5000/v1/search
{"num_results": 0, "query": "", "results": []}

产生如上结果说明仓库服务可用。

至此,仓库的简易配置就结束了。

但是问题来了,我们pull,push的文件在哪?哈哈,原来默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下:

$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

我们将本机的centos镜像tag一下

$ sudo docker tag centos 192.168.4.160:5000/centos:latest

这时将本地仓库push到私有仓库中去

$ sudo docker push 192.168.4.160:5000/centos

可是失败了

2015/08/05 11:01:17 Error: Invalid registry endpoint https://192.168.4.160:5000/v1/: Get https://192.168.4.160:5000/v1/_ping: dial tcp 192.168.4.160:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.4.160: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.4.160:5000/ca.crt

这是因为docker采用了安全机制,若想跳过此安全验证,可以在docker配置文件中添加--insecure-registry 192.168.4.160:5000该参数标记该仓库允许不安全连接,这在deamon中提到过。

修改/etc/sysconfig/docker文件

OPTIONS='--selinux-enabled --insecure-registry 192.168.4.160:5000'

这样应该就可以了。

$ sudo docker push 192.168.4.160:5000/progrium
The push refers to a repository [192.168.4.160:5000/progrium] (len: 1)
Sending image list
Pushing repository 192.168.4.160:5000/progrium (1 tags)
511136ea3c5a: Image successfully pushed
d7ac5e4f1812: Image successfully pushed
2f4b4d6a4a06: Image successfully pushed
83ff768040a0: Image successfully pushed
6c37f792ddac: Image successfully pushed
e54ca5efa2e9: Image successfully pushed
2d07e6ffe5ad: Image successfully pushed
a2de3cd83939: Image successfully pushed
8d2c32294d38: Image successfully pushed
873c28292d23: Image successfully pushed
Pushing tag for rev [873c28292d23] on {http://192.168.4.160:5000/v1/repositories/progrium/tags/latest}

查看仓库内容

$ curl 192.168.4.100/v1/search
{"num_results": 5, "query": "", "results": [{"description": null, "name": "library/centos"}, {"description": null, "name": "library/ubuntu"}, {"description": null, "name": "library/busybox"}, {"description": null, "name": "library/postgres"}, {"description": "", "name": "library/progrium"}]}

说明成功了!!