構建Docker映象倉庫的另一選擇:Nexus3(二)
接上一篇(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
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)。
[[email protected]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上傳到私服上去
[[email protected]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
[[email protected]0002 ~]# docker tag sonatype/nexus:3 yours_ip:8088/sonatype/nexus:3
[[email protected]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
刪除本地映象,並重新拉取映象:
[[email protected]0002 ~]# docker rmi ip:8088/centos:centos7
Untagged: ip:8088/centos:centos7
Untagged: ip:8088/[email protected]:fc2476ccae2a5186313f2d1dadb4a969d6d2d4c6b23fa98b6c7b0a1faad67685
[[email protected]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
[[email protected]0002 ~]# docker pull ip:8088/centos:centos7
centos7: Pulling from centos
Digest: sha256:fc2476ccae2a5186313f2d1dadb4a969d6d2d4c6b23fa98b6c7b0a1faad67685
Status: Downloaded newer image for ip:8088/centos:centos7
[[email protected]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
按鈕,但是這個會直接將倉庫清空了,沒找到如何刪除某個映象的方法,歡迎大神評論中完善一下刪除映象方法,謝謝~~