Docker私有仓库

在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢?

它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。

所以,我们也可以带上仓库地址去拉取镜像,如:docker pull registry.hub.docker.com/library/alpine,不过要注意,这种方式下载的镜像的默认名称就会长一些。

如果要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,又能怎么办呢?

正因为这种需要,所以私有仓库也就有用武之地了。

所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

想想如下场景:

有一个商业项目,需要部署到N台机器上(也就是分布式部署)。

1、常规做法:生成部署文件,手动拷贝到各个服务器,调整各项配置,挨个运行。(大致耗时半小时)

2、常规做法高级版:在每台服务器上安装FTP Server(实际上除非静态,否则不够用),或者是SVN Server(相对FTP Server,可以还原版本),相对常规做法,优化了手动拷贝这个部署。(大致耗时20分钟)

3、使用Docker的做法(前提是要部署的服务器要安装好docker环境):在某台服务器上构建好镜像,拷贝镜像到其他机器,启动镜像(大致耗时10分钟)。

其中拷贝镜像的方式如下:

# 将docker镜像保存为tar文件。
docker save <image name> > <tar file address>
# 如
docker save node-test > /tmp/node-test.tar# 拷贝这个tar文件到需要使用该镜像的服务器上(FTP,SCP等等)# 将tar文件文件加载为镜像
docker load < /tmp/node-test.tar# 接下来就可以通过镜像运行容器了。

这种方式中,用到了Docker的优势,但是拷贝文件这个,实在是山寨。

4、使用Docker+私有仓库的做法:在某台服务器上构建好镜像,推送到私有仓库,在其他要部署的服务器上,拉取镜像,然后运行。

对比以上的几种方式,我们可以知道前三种都无法逃避拷贝文件,并登录到服务器这个操作,这也是操作慢的根源,当我们有了私有仓库之后,所有的步骤都差不多可以自动化了,可以说是大大提交的效率。

看到私有仓库有这么大的优势,肯定要一探究竟了吧。别急,接下来,我们就来看看如何部署和使用私有仓库,并利用 Humpback 来再次提高部署效率。

搭建私有仓库

既然是使用 Docker ,那毫无意外,私有仓库也是个容器化的东西。Docker官方早就为我们考虑了私有化部署的场景,所以,它提供了官方的私有仓库镜像:registry。接下来,我们就使用这个镜像来搭建私有仓库。

首先,按照常规思路,我们先拉取镜像:docker pull registry:2.6.1。(建议带上Tag拉取)

一般来说,有了镜像,我们就可以直接运行它就行了。

为了定制一些配置,和在 Humpback 中使用,我们还需要提供一个定制化的配置文件(使用yml来编写配置文件),如下:

# config.yml 内容
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :7000
  secret: docker-registry
  headers:
    X-Content-Type-Options: [nosniff]
    Access-Control-Allow-Headers: ['*']
    Access-Control-Allow-Origin: ['*']
    Access-Control-Allow-Methods: ['GET,POST,PUT,DELETE']
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

其中 storage 设置提交到仓库的镜像,应该存储在什么地方;http 节点中需要配置端口和安全码,其中关键的地方在于 http.headers 的配置。如上的配置,是为了能够跨域访问仓库API,这是要让仓库搭配 Humpback 必须的设置,Humpback会在浏览器端对仓库发起请求。

如果不设置 http.secret,会遇到如下错误:

No HTTP secret provided - generated random secret. 

还需要注意,http.addr 的写法,:7000 并不是错误的写法,不要省略了 : ,这代表使用所有地址的 7000 端口。

接着我们把这个配置文件放在 /etc/docker/registry/ 目录下,然后就可以创建容器并运行了,命令如下:

# -p映射端口,格式为:主机端口:容器内部端口
# -v映射volumn(目录或者文件),格式为:主机目录:容器内目录
# --name 设置容器名称
# 最后的 `registry:2.6.1` 则是镜像名称
docker run -d -p 7000:7000 --restart=always \-v /var/lib/registry/:/var/lib/registry/ \-v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml \--name humpback-registry \-v /etc/localtime:/etc/localtime:ro \registry:2.6.1

运行好容器后,我们通过直接访问地址 http://192.168.1.200:7000/v2/ 来检查仓库是否正常运行,当返回 {} 时,表示部署成功。

推送镜像到私有仓库

要推送镜像到私有仓库,需要先根据私有仓库地址来设定新标签。根据我的环境,我进行的操作如下:

# pull image from docker hub(从官方仓库拉取一个镜像)
docker pull alpine:3.6# 根据私有仓库,设定标签(必须)
# 为镜像 `alpine:3.6` 创建一个新标签 `192.168.1.200:7000/alpine:3.6`
docker tag alpine:3.6 192.168.1.200:7000/alpine:3.6# 推送到私有仓库中
docker push 192.168.1.200:7000/alpine:3.6

在推送到的时候,可能会遇到问题:http: server gave HTTP response to HTTPS client,因为默认是提交到 https,但我们的仓库是使用的http,此时要么创建一个https映射,要么将仓库地址加入到不安全的仓库列表中。

如何将仓库地址配置到不安全仓库列表中?

使用如下步骤:

# 编辑 /etc/docker/daemon.json
vi /etc/docker/daemon.json
# 增加配置项
{... # 其他配置项"insecure-registries":[ # 关键配置项,将仓库将入到不安全的仓库列表中"192.168.1.200:7000"]
}
# 重启Docker服务(CentOS 7.2)
systemctl restart docker

之后,再次执行 docker push 192.168.1.200:7000/alpine:3.6 就没问题了。

通过访问 http://192.168.1.200:7000/v2/alpine/tags/list 就能看到刚才提交的镜像了。

也可以通过 http://192.168.1.200:7000/v2/_catalog 来列出仓库中的镜像列表。

Humpback中使用私有仓库

至此,我们已经安装好了私有仓库,接着,我们就需要在 Humpback 中来使用私有仓库。

首先,需要在系统配置中启用私有仓库,并设置好我们的仓库地址,如下:

之后,我们就可以查看 Hub 功能了,截图如下:

接着,重点来了,我们来创建容器的时候,可以使用私有仓库的镜像了:

结语

Humbpack 已经在我公司稳定迭代1年多,是一套比较简单易用,又不失强大的Docker管理平台。

有 Docker 运维需求,而又因为命令行的 Swarm 不够易用,强大的 K8S(Kubernetes) 难以部署和运维,那就赶快来尝试下 Humpback,够用,易用,易部署。

同时,用来作为本地开发部署环境也是极好的。比如我就喜欢把各种数据库,各种尝鲜的程序让 Humpback 来管理,用之即来挥之即去。

最后:Humpback开源免费,Github地址是:https://github.com/humpback/humpback,要是喜欢,还望不吝给个 Star;如果觉得不好用,或者不够用,也欢迎给我们提 Issue,当然,能够有 PR 那就更好了。

Docker容器管理平台Humpback进阶-私有仓库相关推荐

  1. docker一个简单易用的容器管理平台-Humpback

    什么是Humpback? 项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~ 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是 ...

  2. 一个简单易用的容器管理平台-Humpback

    什么是Humpback? 项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~ 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是 ...

  3. 美团点评Docker容器管理平台

    本文是郑坤根据第14期美团点评技术沙龙"你不知道的美团云"演讲内容整理而成,已发表在<程序员>杂志2017年1月刊. 美团点评容器平台简介 本文介绍美团点评的Docke ...

  4. 陌陌基于Kubernetes和Docker容器管理平台的架构实践

    为什么选择使用Kubernetes? 在使用Kubernetes之前,陌陌在应用发布和运行环境方面遇到的具体问题,如下: 应用发布时间很长,主要是因为发布过程中需要做隔离.恢复等动作,还需要登录查看实 ...

  5. 搭建轻量级的容器管理平台-Humpback

    什么是 Humpback? Humpback 可以帮助企业快速搭建轻量级的 Docker 容器云管理平台,若将你的 Docker 主机接入到 Humpback 平台中,就能够为你带来更快捷稳定的容器操 ...

  6. 【云原生之Docker实战】部署轻量级容器云管理平台Humpback

    [云原生之Docker实战]部署轻量级容器云管理平台Humpback 一.Humpback介绍 1.Humpback简介 2.Humpback特点 二.检查docker环境 1.检查docker状态 ...

  7. 五阿哥钢铁电商平台Docker容器云平台建设实践——你想知道的都在这里!

    前言 五阿哥钢铁电商平台(www.wuage.com)是由钢铁行业第一的中国五矿与互联网第一的阿里巴巴联手打造,并充分运用双方股东优势资源,即:阿里巴巴在大数据.电商运营.互联网产品技术上的巨大优势, ...

  8. IT企业是如何选择容器管理平台的

    对IT企业而言,很难确定哪个容器管理工具是最好的.对某一个企业来说复杂的东西,或许对另一个企业而言是灵活且易于扩展的.IT团队一般是通过考量对工具的支持.交互操作性这些方面,来确定哪一个工具是适合自己 ...

  9. 部署 docker 容器虚拟化平台

    Docker 概述 Docker 是一个开源的应用容器引擎,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目,它基于 LXC 的高级容器引擎,源代码托管在 Github 上, ...

最新文章

  1. Maya和Arnold的高级照明实践
  2. JS实现博客前端页面(一)—— 封装基础库
  3. android 修改编译内核源码 对抗反调试
  4. C语言创建一个节点Node(附完整源码)
  5. python matlabplot animate 刷新_matlab动态绘图Animation
  6. 算术类型转换、整型提升
  7. Server 2016DC查看五种AD角色的方法
  8. location定位_javascript自学记录:location对象
  9. Behavior Language Processing with Graph based Feature Generation for Fraud DetectioninOnline Lending
  10. gradle:Creating New Gradle Builds
  11. c语言中除号用百分号,【期末复习】人教版六年级数学(下册)知识要点
  12. Quick Search(windows文件搜索工具)官方中文版V5.35.1.134 | 电脑文件快速查找工具下载
  13. android怎样开启root权限管理,【经验】安卓手机怎么开启Root权限?
  14. win10弹出计算机内存不足,如何解决win10系统提示计算机内存不足的问题
  15. win7家庭版桌面没有计算机图标,Win7 home basic家庭普通版显示桌面图标的方法
  16. html代码 如何使用方法,如何使用html代码
  17. 文档标签化的几种方案
  18. windows store下载_年度付费软件排行榜这10款软件,你用过5款以上,就算效率达人!Windows平台...
  19. Focus和SetFocus、GetFocus、LoseFocus
  20. 【[SDOI2008]山贼集团】

热门文章

  1. 设计模式初学者教程(上)
  2. Sql Server 2019 详细安装教程
  3. 简单易用的任务队列-beanstalkd
  4. Windows beanstalkd启动
  5. C# 十进制转十六进制
  6. 实现一个家庭安防与环境监测系统(二)
  7. 【图文详细】Hbuilder中PHP环境配置
  8. 腾讯马松松谈企业安全建设:安全工程化如何落到实处
  9. python模拟登录密码加密_有关爬虫模拟登陆时,处理用户名密码加密问题的方法...
  10. 公积金自由还款计算程序 ( by quqi99 )