过节之前来一发,又是许久没整理笔记了,今天跟大家聊聊Docker如何搭建私有仓库的几种方式。首先我们来回顾一下之前讲到的Doker 平台的基本构成。
Docker 平台基本上由三部分组成:
与Mavan的管理一样,Docker不仅提供了一个中央仓库,同时也允许我们使用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是一个多功能的仓库管理系统,是企业常用的私有仓库服务器软件。目前常被用来作为Maven私服、Docker私服。
总之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
注意事项:
$ 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
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
创建本地仓库:
Nexus配置:
项目 | 地址端口 |
---|---|
Nexus UI | 8081 |
private repo | 8082 |
URL | http://192.168.1.180:8081/ |