开发者社区> 小柒2012> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

002

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

Doker 平台的基本构成

4

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

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

搭建方式

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

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

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

方式一(registry镜像)

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

搭建私有仓库:

# 下载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

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

测试仓库Push/Pull:

# 首先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简介

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镜像安装。

下载安装:

# 下载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的样式,显然是无法跑起来的。

1213.png

  • Nexus的安装是/opt/sonatype/nexus。
  • 持久目录,/nexus-data用于配置,日志和存储。该目录需要由作为UID 200运行的Nexus进程写入。
  • 环境变量用于将JVM参数传递给启动脚本
$ 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,默认为/
docker run -d -p 8081:8081 --name nexus -e NEXUS_CONTEXT=nexus sonatype/nexus3
  • 持久数据
$ 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

创建本地仓库:

docker_nexus

Nexus配置:

项目 地址端口
Nexus UI 8081
private repo 8082
URL http://192.168.1.180:8081/

作者: 小柒2012

欢迎关注: https://blog.52itstyle.com

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Docker之 - 使用镜像和仓库(三)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
51 0
Docker之 - 使用镜像和仓库(一)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
57 0
Docker之 - 使用镜像和仓库(三)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
64 0
Docker之 - 使用镜像和仓库(二)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
85 0
Docker之 - 使用镜像和仓库(一)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
176 0
Docker之- 使用Docker 镜像和仓库
Docker之- 使用Docker 镜像和仓库目录 使用Docker 镜像和仓库什么是 Docker 镜像列出 Docker 镜像tag 标签Docker Hub拉取镜像查找镜像构建镜像创建Docker Hub 账号使用 Docker 的commit 命令创建镜像使用 Dockerfile 构建镜...
5603 0
使用Docker镜像和仓库
使用Docker镜像和仓库
1598 0
什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
312 0
+关注
小柒2012
一个程序员,欢迎骚扰!!!
153
文章
2325
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载