构建Docker镜像仓库的另一选择:Nexus3(二)

版权声明:本文为junehappylove原创文章,未经junehappylove允许不得转载。 https://blog.csdn.net/junehappylove/article/details/82686230

接上一篇(https://blog.csdn.net/junehappylove/article/details/82683167)
昨晚上折腾到凌晨3点多~~哦~!不是是今天凌晨3点多。。。

那么究竟Nexus3是如何来支持Docker镜像的呢?我们迫不及待的打开控制页面的按钮,像部署一台Maven私服那样开始操作,在设置 Repositories 选项卡中中选择 Create repository。

令人激动的信息终于出现了,没有看错,Nexus3确实支持如此丰富的仓库类型:
这里写图片描述

我们比较关心的是Docker镜像仓库,这里我们可以看到三种类型,分别是docker(group),docker(hosted),docker(proxy)。其含义解释如下:

  • hosted : 本地存储,即同docker官方仓库一样提供本地私服功能
  • proxy : 提供代理其他仓库的类型,如docker中央仓库
  • group : 组类型,实质作用是组合多个仓库为一个地址

我们的目标是建立一个本地私服Docker镜像仓库,于是选择docker(hosted),填写仓库名称,端口例如8088等信息(如下图,其他信息默认)后点击Create repository创建即可。
这里写图片描述

只需要很短的时间,我们即可见到服务启动成功的信息:
这里写图片描述

Docker私服

部署过程到此为止结束,真的是非常的简单!下面我们来看看在docker客户端的镜像提交及下载过程吧:
(在我们的测试场景中并未为镜像仓库服务启用https证书,所以docker启动进程的参数还需要添加参数--inscure-registry=(yours ip):8088,具体方法依不同OS有所差异不再详述)

Docker配置

/etc/docker/目录下,创建daemon.json文件。在文件中写入:

{
    "insecure-registries": [
        "1.2.3.4:8088"
    ]
}
//多个私服写法,逗号分隔即可
{
    "insecure-registries": [
        "1.2.3.4:8088", 
        "1.2.3.5:8088"
    ]
}

保存退出后,重启docker
systemctl restart docker

[root@ecs-a30e-0002 ~]# docker info
Containers: 12
 Running: 12
 Paused: 0
 Stopped: 0
Images: 30
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-693.11.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.51GiB
Name: ecs-a30e-0002.novalocal
ID: GLUG:OVGG:WQNL:T5OZ:NMBC:VEHV:RI33:CLFK:JFTU:E4Q7:7L3B:2EFS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 yours_ip:8088  # 这里能看的你刚才配置的地址
 127.0.0.0/8
Live Restore Enabled: false

Docker私服镜像上传

Docker客户端需要登录镜像仓库才能镜像上传下载的操作,账号就是Nexux的用户账号,这里我们使用了管理员的登录信息(admin/admin123)。

[root@ecs-a30e-0002 ~]# docker login yours_ip:8088
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
# 这里就把刚刚创建的镜像 sonatype/nexus:3上传到私服上去
[root@ecs-a30e-0002 ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
sonatype/nexus            3                   687578d612b9        9 hours ago         505MB
sonatype/nexus3           latest              777b20c20405        2 weeks ago         505MB
rancher/server            latest              38d4a75fa8f9        5 weeks ago         1.08GB
centos                    centos7             5182e96772bf        5 weeks ago         200MB
rancher/agent             v1.2.11             1cc7591af4f5        7 weeks ago         243MB
rancher/net               v0.13.17            f170c38e3763        7 weeks ago         311MB
rancher/dns               v0.17.4             678bde0de4d2        2 months ago        249MB
rancher/scheduler         v0.8.5              0a2bfb5d8831        2 months ago        248MB
rancher/healthcheck       v0.3.8              ce78cf69cc0b        2 months ago        391MB
rancher/metadata          v0.10.4             02104eb6e270        2 months ago        251MB
rancher/network-manager   v0.7.22             13381626c510        2 months ago        256MB
rancher/net               holder              665d9f6e8cc1        17 months ago       267MB
[root@ecs-a30e-0002 ~]# docker tag sonatype/nexus:3 yours_ip:8088/sonatype/nexus:3
[root@ecs-a30e-0002 ~]# docker push yours_ip:8088/sonatype/nexus:3
The push refers to repository [yours_ip:8088/sonatype/nexus]
e006db8cfa78: Pushed 
3f91d51a2502: Pushed 
1d31b5806ba4: Pushed 
3: digest: sha256:e41db31fda71a23f0c3cf080ddb916d7014ec1709089e99e08747939eedcf5ec size: 950

然后docker仓库里就看到了
这里写图片描述

注意
使用docker tag对镜像进行管理(必须进行此项操作)

docker tag使用格式:
docker tag SOURCE_IMAGE[:TAG]  TARGET_IMAGE[:TAG]
docker tag portainer-temlates-new:latest ip:8088/portainer-templates:v1
docker push ip:8088/portainer-templates:v1

Docker私服镜像拉取

重新往私服中推送一个镜像:

[root@ecs-a30e-0002 ~]# docker tag centos:centos7 ip:8088/centos:centos7
[root@ecs-a30e-0002 ~]# docker push ip:8088/centos:centos7
The push refers to repository [ip:8088/centos]
1d31b5806ba4: Layer already exists 
centos7: digest: sha256:fc2476ccae2a5186313f2d1dadb4a969d6d2d4c6b23fa98b6c7b0a1faad67685 size: 529
[root@ecs-a30e-0002 ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
sonatype/nexus                       3                   687578d612b9        10 hours ago        505MB
ip:8088/sonatype/nexus               3                   687578d612b9        10 hours ago        505MB
sonatype/nexus3                      latest              777b20c20405        2 weeks ago         505MB
rancher/server                       latest              38d4a75fa8f9        5 weeks ago         1.08GB
ip:8088/centos                       centos7             5182e96772bf        5 weeks ago         200MB  #这个镜像刚上传的
centos                               centos7             5182e96772bf        5 weeks ago         200MB
rancher/agent                        v1.2.11             1cc7591af4f5        7 weeks ago         243MB
rancher/net                          v0.13.17            f170c38e3763        7 weeks ago         311MB
rancher/dns                          v0.17.4             678bde0de4d2        2 months ago        249MB
rancher/scheduler                    v0.8.5              0a2bfb5d8831        2 months ago        248MB
rancher/healthcheck                  v0.3.8              ce78cf69cc0b        2 months ago        391MB
rancher/metadata                     v0.10.4             02104eb6e270        2 months ago        251MB
rancher/network-manager              v0.7.22             13381626c510        2 months ago        256MB
rancher/net                          holder              665d9f6e8cc1        17 months ago       267MB

删除本地镜像,并重新拉取镜像:

[root@ecs-a30e-0002 ~]# docker rmi ip:8088/centos:centos7
Untagged: ip:8088/centos:centos7
Untagged: ip:8088/centos@sha256:fc2476ccae2a5186313f2d1dadb4a969d6d2d4c6b23fa98b6c7b0a1faad67685
[root@ecs-a30e-0002 ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
ip:8088/sonatype/nexus               3                   687578d612b9        10 hours ago        505MB
sonatype/nexus                       3                   687578d612b9        10 hours ago        505MB
sonatype/nexus3                      latest              777b20c20405        2 weeks ago         505MB
rancher/server                       latest              38d4a75fa8f9        5 weeks ago         1.08GB
centos                               centos7             5182e96772bf        5 weeks ago         200MB
rancher/agent                        v1.2.11             1cc7591af4f5        7 weeks ago         243MB
rancher/net                          v0.13.17            f170c38e3763        7 weeks ago         311MB
rancher/dns                          v0.17.4             678bde0de4d2        2 months ago        249MB
rancher/scheduler                    v0.8.5              0a2bfb5d8831        2 months ago        248MB
rancher/healthcheck                  v0.3.8              ce78cf69cc0b        2 months ago        391MB
rancher/metadata                     v0.10.4             02104eb6e270        2 months ago        251MB
rancher/network-manager              v0.7.22             13381626c510        2 months ago        256MB
rancher/net                          holder              665d9f6e8cc1        17 months ago       267MB
[root@ecs-a30e-0002 ~]# docker pull ip:8088/centos:centos7
centos7: Pulling from centos
Digest: sha256:fc2476ccae2a5186313f2d1dadb4a969d6d2d4c6b23fa98b6c7b0a1faad67685
Status: Downloaded newer image for ip:8088/centos:centos7
[root@ecs-a30e-0002 ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
ip:8088/sonatype/nexus               3                   687578d612b9        10 hours ago        505MB
sonatype/nexus                       3                   687578d612b9        10 hours ago        505MB
sonatype/nexus3                      latest              777b20c20405        2 weeks ago         505MB
rancher/server                       latest              38d4a75fa8f9        5 weeks ago         1.08GB
centos                               centos7             5182e96772bf        5 weeks ago         200MB
ip:8088/centos                       centos7             5182e96772bf        5 weeks ago         200MB  # 镜像又被拉取下来了
rancher/agent                        v1.2.11             1cc7591af4f5        7 weeks ago         243MB
rancher/net                          v0.13.17            f170c38e3763        7 weeks ago         311MB
rancher/dns                          v0.17.4             678bde0de4d2        2 months ago        249MB
rancher/scheduler                    v0.8.5              0a2bfb5d8831        2 months ago        248MB
rancher/healthcheck                  v0.3.8              ce78cf69cc0b        2 months ago        391MB
rancher/metadata                     v0.10.4             02104eb6e270        2 months ago        251MB
rancher/network-manager              v0.7.22             13381626c510        2 months ago        256MB
rancher/net                          holder              665d9f6e8cc1        17 months ago       267MB

由于 Nexus 在Maven jar管理方面已经是很成熟的产品,增加
了Docker等支持以后基本思想没有太大变化,所以关于其他仓库配置这里不再提及,具体可以参考官方文档

面对Nexus3的强大功能,本篇文章只是起到抛砖引玉的作用。而对于另外两种Docker镜像仓库类型感兴趣的朋友可以进一步做相关测试,这里只做简要的描述,希望能够一起研究学习:

  • 创建代理仓库(docker proxy)

创建仓库类型选择docker proxy,Remote storage填写https://registry-1.docker.io,Docker index选择Use Docker Hub,然后从代理仓库地址pull就可以了:

这里写图片描述

  • 创建group仓库(docker group)

group不提供具体存储服务,其主要作用就是类似一个前端反向代理,可以把多个仓库(比如hosted私服和 proxy)组合成一个地址提供访问,创建方法基本相同,主要是添加多个hosted或者proxy类型的其他仓库即可:

这里写图片描述

注意:上面增加了两个端口8087、8086,需要放到防火墙外


现在有个问题是,上面一顿操作终于环境搭建好了!可惜仓库里放了许多的”垃圾“镜像,该怎么删除呢?
ui中只有Delete repository按钮,但是这个会直接将仓库清空了,没找到如何删除某个镜像的方法,欢迎大神评论中完善一下删除镜像方法,谢谢~~

猜你喜欢

转载自blog.csdn.net/junehappylove/article/details/82686230