小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Docker Private Registry

 小仙女本仙人 2022-11-16 發(fā)布于北京

Docker Registry

網(wǎng)上有很多的Registry服務(wù)器都支持第三方用戶注冊,而后基于用戶名去做自己的倉庫,但是使用互聯(lián)網(wǎng)上的Registry有一個缺陷,那就是我們?nèi)ネ扑秃拖螺d鏡像時都不會很快,而在生產(chǎn)環(huán)境中很可能并行啟動的容器將達(dá)到幾十、上百個,而且很有可能每個服務(wù)器本地是沒有鏡像的,此時如果通過互聯(lián)網(wǎng)去下載鏡像會有很多問題,比如下載速度會很慢、帶寬會用很多等等,如果帶寬不夠的話,下載至啟動這個過程可能要持續(xù)個幾十分鐘,這已然違背了使用容器會更加輕量、快速的初衷和目的。因此,很多時候我們很有可能需要去做自己的私有Registry。

Registry用于保存docker鏡像,包括鏡像的層次結(jié)構(gòu)和元數(shù)據(jù)。用戶可以自建Registry,也可以使用官方的Docker Hub。

Docker Registry分類:

  • Sponsor Registry:第三方的Registry,供客戶和Docker社區(qū)使用
  • Mirror Registry:第三方的Registry,只讓客戶使用
  • Vendor Registry:由發(fā)布docker鏡像的供應(yīng)商提供的registry
  • Private Registry:通過設(shè)有防火墻和額外的安全層的私有實體提供的registry

事實上,如果運維的系統(tǒng)環(huán)境托管在云計算服務(wù)上,比如阿里云,那么用阿里云的Registry則是最好的選擇。很多時候我們的生產(chǎn)環(huán)境不會在本地,而是托管在數(shù)據(jù)中心機房里,如果我們在數(shù)據(jù)中心機房里的某臺主機上部署Registry,因為都在同一機房,所以屬于同一局域網(wǎng),此時數(shù)據(jù)傳輸走內(nèi)網(wǎng),效率會極大的提升。

所有的Registry默認(rèn)情況下都是基于https工作的,這是Docker的基本要求,而我自建Registry時很可能是基于http工作的,但是Docker默認(rèn)是拒絕使用http提供Registry服務(wù)的,除非明確的告訴它,我們就是要用http協(xié)議的Registry。

Docker Private Registry

為了幫助我們快速創(chuàng)建私有Registry,Docker專門提供了一個名為Docker Distribution的軟件包,我們可以通過安裝這個軟件包快速構(gòu)建私有倉庫。

問:既然Docker是為了運行程序的,Docker Distribution能否運行在容器中?

容器時代,任何程序都應(yīng)該運行在容器中,除了Kernel和init。而為了能夠做Docker Private Registry,Docker Hub官方直接把Registry做成了鏡像,我們可以直接將其pull到本地并啟動為容器即可快速實現(xiàn)私有Registry。

Registry的主要作用是托管鏡像,Registry運行在容器中,而容器自己的文件系統(tǒng)是隨著容器的生命周期終止和刪除而被刪除的,所以當(dāng)我們把Registry運行在容器中時,客戶端上傳了很多鏡像,隨著Registry容器的終止并刪除,所有鏡像都將化為烏有,因此這些鏡像應(yīng)該放在存儲卷上,而且這個存儲卷最好不要放在Docker主機本地,而應(yīng)該放在一個網(wǎng)絡(luò)共享存儲上,比如NFS。不過,鏡像文件自己定義的存儲卷,還是一個放在Docker本地、Docker管理的卷,我們可以手動的將其改成使用其它文件系統(tǒng)的存儲卷。

這就是使用容器來運行Registry的一種簡單方式。自建Registry的另一種方式,就是直接安裝docker-distribution軟件。

使用docker-distribution自建Registry

在node02上自建Registry

[root@node02 ~]# yum -y install docker-distribution
[root@node02 ~]# vim /etc/docker-distribution/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry  # 修改此處為一個容量大的磁盤分區(qū)目錄
http:
    addr: :5000
    
[root@node02 ~]# systemctl start docker-distribution
[root@node02 ~]# ss -antl
State       Recv-Q Send-Q                   Local Address:Port                                  Peer Address:Port              
LISTEN      0      100                          127.0.0.1:25                                               *:*                  
LISTEN      0      128                                  *:22                                               *:*                  
LISTEN      0      100                              [::1]:25                                            [::]:*                  
LISTEN      0      128                               [::]:5000                                          [::]:*                  
LISTEN      0      128                               [::]:22                                            [::]:*

在localhost上使用自建的Registry去上傳鏡像

# 使用insecure-registries參數(shù)添加http支持
[root@localhost ~]# vim /etc/docker/daemon.json
"insecure-registries": ["192.168.44.128:5000"]  //加入這行
[root@localhost ~]# systemctl restart docker
[root@localhostl ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
httpd        v0.1      73c44d5dcbc2   25 minutes ago   377MB
nginx        latest    5d1ba5a6e9d1   3 days ago       390MB
alpine       latest    7731472c3f2a   7 weeks ago      5.61MB
busybox      latest    b97242f89c8a   7 weeks ago      1.23MB
httpd        latest    683a7aad17d3   7 weeks ago      138MB
centos       latest    300e315adb2f   3 months ago     209MB
[root@localhost ~]# docker tag nginx:latest 192.168.44.128:5000/nginx:latest
[root@localhost ~]# docker push 192.168.44.128:5000/nginx

使用官方鏡像自建Registry

[root@node02 ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

[root@node02 ~]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      100    127.0.0.1:25                  *:*                  
LISTEN      0      128     *:22                  *:*                  
LISTEN      0      100     [::1]:25                   [::]:*                  
LISTEN      0      128      [::]:5000                 [::]:*                  
LISTEN      0      128      [::]:22                   [::]:*

Harbor

無論是使用Docker-distribution去自建倉庫,還是通過官方鏡像跑容器的方式去自建倉庫,通過前面的演示我們可以發(fā)現(xiàn)其是非常的簡陋的,還不如直接使用官方的Docker Hub去管理鏡像來得方便,至少官方的Docker Hub能夠通過web界面來管理鏡像,還能在web界面執(zhí)行搜索,還能基于Dockerfile利用Webhooks和Automated Builds實現(xiàn)自動構(gòu)建鏡像的功能,用戶不需要在本地執(zhí)行docker build,而是把所有build上下文的文件作為一個倉庫推送到github上,讓Docker Hub可以從github上去pull這些文件來完成自動構(gòu)建。

但無論官方的Docker Hub有多強大,它畢竟是在國外,所以速度是最大的瓶頸,我們很多時候是不可能去考慮使用官方的倉庫的,但是上面說的兩種自建倉庫方式又十分簡陋,不便管理,所以后來就出現(xiàn)了一個被 CNCF 組織青睞的項目,其名為Harbor。

Harbor簡介

Harbor是由VMWare在Docker Registry的基礎(chǔ)之上進(jìn)行了二次封裝,加進(jìn)去了很多額外程序,而且提供了一個非常漂亮的web界面。

Project Harbor is an open source trusted cloud native registry project that stores, signs, and scans context.

Harbor extends the open source Docker Distribution by adding the functionalities usually required by users such as security, identity and management.

Harbor supports advanced features such as user management, access control, activity monitoring, and replication between instances.

Harbor的功能

Feathers:

  • Multi-tenant content signing and validation
  • Security and vulnerability analysis
  • Audit logging
  • Identity integration and role-based access control
  • Image replication between instances
  • Extensible API and graphical UI
  • Internationalization(currently English and Chinese)

Docker compose

Harbor在物理機上部署是非常難的,而為了簡化Harbor的應(yīng)用,Harbor官方直接把Harbor做成了在容器中運行的應(yīng)用,而且這個容器在Harbor中依賴類似redis、mysql、pgsql等很多存儲系統(tǒng),所以它需要編排很多容器協(xié)同起來工作,因此VMWare Harbor在部署和使用時,需要借助于Docker的單機編排工具(Docker compose)來實現(xiàn)。

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

Docker Compose官方文檔

Harbor部署

Harbor官方文檔

[root@localhostl ~]# wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.28.5/docker-compose-Linux-x86_64
[root@localhostl ~]# chmod +x /usr/local/bin/docker-compose
[root@localhostl ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多