1. 程式人生 > >構建Docker映象倉庫的另一選擇:Nexus3(二)

構建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

,具體方法依不同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)。

[[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按鈕,但是這個會直接將倉庫清空了,沒找到如何刪除某個映象的方法,歡迎大神評論中完善一下刪除映象方法,謝謝~~