接上一篇(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
按钮,但是这个会直接将仓库清空了,没找到如何删除某个镜像的方法,欢迎大神评论中完善一下删除镜像方法,谢谢~~