前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker学习之搭建私有镜像仓库

Docker学习之搭建私有镜像仓库

作者头像
小柒2012
发布2019-12-09 16:12:50
2K0
发布2019-12-09 16:12:50
举报
文章被收录于专栏:IT笔记

过节之前来一发,又是许久没整理笔记了,今天跟大家聊聊Docker如何搭建私有仓库的几种方式。首先我们来回顾一下之前讲到的Doker 平台的基本构成。

Doker 平台的基本构成

Docker 平台基本上由三部分组成:

  • 客户端:用户使用 Docker 提供的工具(CLI 以及 API 等)来构建,上传镜像并发布命令来创建和启动容器
  • Docker 主机:从 Docker registry 上下载镜像并启动容器
  • Docker registry:Docker 镜像仓库,用于保存镜像,并提供镜像上传和下载
  • 后面的文章会具体分析。

搭建方式

与Mavan的管理一样,Docker不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有镜像仓库。

使用私有仓库有许多优点:

  • 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
  • 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

方式一(registry镜像)

环境:为了测试安装方便,这里准备了一台装有Docker的云服务器。

搭建私有仓库:

代码语言:javascript
复制
# 下载registry镜像
$ sudo docker pull registry
# 通过该镜像启动一个容器
$ sudo docker run -d -p 8082:8082 registry
# 映射镜像路径至宿机器、放置容器删除、镜像丢失:
$ sudo docker run -d -p 8082:8082 -v /opt/data/registry:/tmp/registry registry

修改配置并重启Docker

代码语言:javascript
复制
vi /etc/docker/daemon.json
代码语言:javascript
复制
{
   "registry-mirrors": ["172.17.120.102:8082"],
   "insecure-registries":["172.17.120.102:8082"]
  
}
代码语言:javascript
复制
# 重启 docker 服务
systemctl restart docker

测试仓库Push/Pull:

代码语言:javascript
复制
# 首先pull一个比较小的镜像(busybox)来测试
docker pull busybox
# 修改一下该镜像的tag
$ docker tag busybox 172.17.120.102:8080/busybox
# 上传镜像到私有仓库。
$ docker push  172.17.120.102:8082/busybox

到此就搭建好了Docker私有仓库,但是如上搭建的仓库是不需要加密认证的,当然你可以通过证书或者Nginx实现认证访问。下面介绍一下基于Nexus 3搭建的Docker私有仓库。

方式二(Nexus 3)

Nexus简介

Nexus是一个多功能的仓库管理系统,是企业常用的私有仓库服务器软件。目前常被用来作为Maven私服、Docker私服。

优点
  • 安装简单,并且有官方Docker镜像
  • 用户界面,并提供REST API
  • 支持浏览、检索以及检查机制
  • 支持npm与bower以及Raw repositories、NuGet repositories

总之Nexus物美价廉,又提供功能全面的oss版,加之支持种类众多的依赖管理,又可以统一管理docker镜像。

安装

参考之前写的一篇博客:本地私服仓库nexus3.3.1使用手册 。当然,这里我们有更简洁的安装方式,由于nexus3+依赖于JDK1.8,可能有不少企业系统上安装的还是1.7甚至是1.6版本,这里我们选择使用Docker镜像安装。

下载安装:

代码语言:javascript
复制
# 下载nexus3镜像(pull前请更换镜像加速器,否则可能无法下载)
$ sudo docker pull sonatype/nexus3
# 通过该镜像启动一个容器
$ sudo docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
# 可能需要一些时间(2-3分钟)才能在新容器中启动该服务。一旦Nexus准备就绪,您可以确定日志以确定结果:
$ sudo docker logs -f nexus
# 测试 如果出现pong说明启动成功
$ curl -u admin:admin123 http://localhost:8081/service/metrics/ping

注意事项:

  • 可能会出现无法启动的问题,由于云服务器只有1G内存,剩余也有几十MB的样式,显然是无法跑起来的。
  • Nexus的安装是/opt/sonatype/nexus。
  • 持久目录,/nexus-data用于配置,日志和存储。该目录需要由作为UID 200运行的Nexus进程写入。
  • 环境变量用于将JVM参数传递给启动脚本
代码语言:javascript
复制
$ docker run -d -p 8081:8081 --name nexus -e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g  -Djava.util.prefs.userRoot=/some-other-dir" sonatype/nexus3
  • 控制Nexus访问目录,NEXUS_CONTEXT,默认为/
代码语言:javascript
复制
docker run -d -p 8081:8081 --name nexus -e NEXUS_CONTEXT=nexus sonatype/nexus3
  • 持久数据
代码语言:javascript
复制
$ mkdir /opt/data/nexus-data && chown -R 200 /opt/data/nexus-data
$ docker run -d -p 8081:8081 --name nexus -v /opt/data/nexus-data:/nexus-data sonatype/nexus3

创建本地仓库:

Nexus配置:

项目

地址端口

Nexus UI

8081

private repo

8082

URL

http://192.168.1.180:8081/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Doker 平台的基本构成
  • 搭建方式
    • 方式一(registry镜像)
      • 方式二(Nexus 3)
        • Nexus简介
        • 优点
        • 安装
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档