1. 程式人生 > >內網自建Docker Registry

內網自建Docker Registry

專案現有CI、CD方案為

  1. 提交程式碼到內網gitlab
  2. 自動觸發gitlab Runner
  3. gitlab Runner 按照.gitlab-ci.yml配置進行編譯打包
  4. gitlab Runner 按照.gitlab-ci.yml配置進行映象構建
  5. gitlab Runner 按照.gitlab-ci.yml配置將映象推送到阿里雲映象服務
  6. 去內網Portainer管理介面進行手動update

現在的問題是在第5步執行時由於多個映象通過外網上傳到阿里雲的映象服務中去比較慢(受限於上行網速,完成映象push需要8分鐘左右)。

由此想到了在內外自建Docker Registry服務,無論是push還是pull映象時間至少可以節省一半以上。

這裡我們使用的是centos7.3,centos7由於其沒有預設開啟xfs的d_type特性,docker可能會出現莫名奇妙的問題。安裝方法可參考Docker CE 映象源站-部落格-雲棲社群-阿里雲
https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.70650369sIkk2L
安裝並啟動docker完成後
執行如下命令

docker run -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry --name registry registry:2.6.2

registry:2.6.2中的 2.6.2為顯示指定版本,避免直接使用registry導致後期registry映象升級導致的差異異常

那如何將映象push到registry呢

我們可以測試將本地進行打個tag,然後push上去

  • 看看本地有哪些映象
[root@xxx-dev ~]# docker images
REPOSITORY            TAG       IMAGE ID    CREATED     SIZE
portainer/portainer     latest    f71b185552bf   5 weeks ago  33.2MB
  • 給portainer/portainer映象打tag
[root@xxx-dev ~]# docker tag portainer/portainer 192.168.1.28:5000/portainer/portainer:latest
  • 將映象傳到我們內網的registry
[root@xxx-dev ~]# docker push 192.168.1.28:5000/portainer/portainer:latest
The push refers to a repository [192.168.1.28:5000/portainer/portainer]
Get https://192.168.1.28:5000/v2/: http: server gave HTTP response to HTTPS clie 

哦豁,裝逼失敗。這裡我們需要將機器配置一下,最主要的是insecure-registries,其中registry-mirrors為阿里雲的加速地址,與本次錯誤無關。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "insecure-registries": ["192.168.1.28:5000"],
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

我們再次嘗試裝逼

[[email protected] ~]# docker push 192.168.1.28:5000/portainer/portainer:latest
The push refers to a repository [192.168.1.28:5000/portainer/portainer]
ac4c534d43cb: Pushed
dd4969f97241: Pushed
latest: digest: sha256:73628b5ded99bb2bf7f3f5e599f7b46044ba5025bea98c32c713afc0d7c972b5 size: 739

成功!

  • 那如何看到我們push的資訊呢?
[root@gpf-dev ~]# curl 192.168.1.28:5000/v2/_catalog
{"repositories":["portainer/portainer"]}

我們也可以pull一下來看看

[[email protected] ~]# docker pull 192.168.1.28:5000/portainer/portainer:latest
latest: Pulling from portainer/portainer
Digest: sha256:73628b5ded99bb2bf7f3f5e599f7b46044ba5025bea98c32c713afc0d7c972b5
Status: Downloaded newer image for 192.168.1.28:5000/portainer/portainer:latest

相關推薦

Docker Registry

專案現有CI、CD方案為 提交程式碼到內網gitlab 自動觸發gitlab Runner gitlab Runner 按照.gitlab-ci.yml配置進行編譯打包 gitlab Runner 按照.gitlab-ci.yml配置進行映象構建 gitla

docker倉庫Registry

建倉 問題解決 pin efi lan crt gis install fault 因為生產情況下官方容器還是比較慢的,所以會用到自建docker倉庫。docker官方提供完整部署倉庫的容器,你只需要提供域名證書,把文件系統掛載到容器,一個用戶密碼文件就可以使

Docker教程:docker遠端repository和本地registry

Docker有一個類似版本管理倉庫(Repositry)的東西,有docker.io提供的官方倉庫(index.docker.io,相當於github),也可以自建(叫docker-registry,相當於自己搭建一個小型github)。 比較 Docker 和 Git

docker swarm體驗簡單之美

hab 3.2 ebs acs docs nal 自建 port advertise 之前用的阿裏雲容器服務,但由於acsrouting的路由錯亂問題,被逼上自建docker swarm的梁山。今天嘗試自己搭建docker swarm,竟然輕松搞定,簡單的超乎想象。 以下

雲計算之路-阿裏雲上-容器難容:容器服務故障以及 docker swarm 集群故障

故障 基本 pos 應用 雲上 灰色 很大的 lead leader 3月21日,由於使用阿裏雲服務器自建 docker swarm 集群的不穩定,我們將自建 docker swarm 集群上的所有應用切換阿裏雲容器服務 swarm 版(非swarm mode)。 3月2

CentOS7.3伺服器離線部署docker和容器

目錄 CentOS7.3伺服器內網離線部署docker和容器 一、離線安裝docker 1、獲取yum倉庫中的docker及其依賴包 2、安裝docker 3、安裝docker-compose 4、啟動docker

ngrok實現埠對映

本文轉自:自搭Ngrok實現樹莓派內網穿透,有刪改。 如果把花生殼類比為使用別人搭好的ss服務,那麼自建Ngrok就是使用自己的ss服務,可見自搭Ngrok的優勢不言而喻,流量費用十分經濟,速度,穩定性和安全性將遠遠勝過花生殼。 現在花生殼是一種比較流行的穿透內網的方式,不過其穩定

郵箱伺服器(上)

自建郵箱伺服器 工具:隨便一個虛擬機器,能聯網即可。這裡使用的域名tg.zyy,也是為了紀念我高中的女神zyy而創的O(∩_∩)O~ 1、概述 沒人喜歡廢話,安裝centos跳過,這裡使用

伺服器解決外訪問穿透【埠對映】)問題的方法總結

自建一個伺服器,如何使外網裝置訪問到內網伺服器,將是個麻煩問題。下面我將介紹一些可以解決這一問題的常用辦法,也就是內網穿透或者說埠對映。 我將這些方法分為三大類,一類適用於沒有公網ip或具有公網ip的伺服器的情形;一類適用於有公網ip的情形;另一類適用於有具有公網ip的伺服

docker 證書 私有 registry 搭建

docker registry 搭建,之前寫過一篇部落格是基於非證書registry,用於快速測試環境,今天寫一個關於搭建自建證書搭建registry,以做筆記 首先建立存放證書的資料夾cert,並在資料夾下生成證書,這裡我用的域名是hub.mydocker

NATApp對映工具使用方法以及Tomcat本地web服務

NatApp內網對映工具使用以及tomcat自建本地服務 最近一直在搞微信和微信小程式開發,本地除錯需要進行內網對映穿透,於是就寫了這篇文章。又由於最近重灌了系統,配置好的tomcat沒有了,在網上找的教程多半是坑,還不如自己寫下來省事情,同時內網對映也

docker 指定ip開容器,並且和在同一個

docker 指定ip開機器 並且和內網在同一個網段 docker 指定ip開機器,並且和內網在同一個網段 第1步:創建自定義網絡 備註:這裏選取了100.0.0.0網段,也可以指定其他任意空閑的網段 docker network create --subnet=100.0.

非節點主機通過遠程管理docker swarm集群

生效 天使 dock blank class listen systemctl clas des 這是今天使用 docker swarm 遇到的一個問題,終於在睡覺前解決了,在這篇隨筆中記錄一下。 在 docker swarm 集群的 manager 節點上用 docke

yum源解決Ceph搭建過程中從官取包慢的問題

pre snappy 真的 spa x86 download crypt file git 最近項目組需要ceph環境,第一次搭建ceph,各種不順,裝了卸,卸了裝,一遍又一遍地按照官網的操作進行。最氣人的是網速差,從官網取包太慢。一輪嘗試就浪費一上午。 因此想到本地新建

redhat 7.2 安裝docker

emctl clean options sys sta ali com -i div 本文介紹在內網環境下如果通過網絡代理映射來完成docekr的安裝,首先在能上網的windows機器上安裝squid,並啟動,本實例中windows機器IP為 192.168.192.101

帶有認證功能的Docker Harbor

域名 mas tab com 求和 port 簡單的 help github What is Harbor? Harbor is an open source cloud native registry that stores, signs, and scans co

Docker容器通過獨立IP直接訪問的方法

地址 9.png 自己 圖片 eight borde log margin 宿主機 Docker官方推薦我們通過端口映射的方式把Docker容器的服務提供給宿主機或者局域網其他容器使用。一般過程是: 1、Docker進程通過監聽宿主機的某個端口,將該端口的數據包發送給Doc

定義docker容器

ext 沒有 sub tex process ado images driver reat 1.通過bridge 驅動創建類似前面默認的 bridge 網絡:docker network create --driver bridge my_net如果沒有指定網段默認為172

訪問Docker容器

外網訪問內網Docker容器 本地安裝了Docker容器,只能在區域網內訪問,怎樣從外網也能訪問本地Docker容器? 本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動Docker容器 Docker容器預設的sshd埠是22。 2. 實現步驟 2.1 下載並解壓holer軟體包

怎樣從外訪問Docker容器

外網訪問內網Docker容器 局域網裡的主機上安裝了Docker容器,只能在內網訪問,怎樣從外網也能訪問內網的Docker容器? 本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動Docker容器 Docker容器預設的sshd埠是22。 2. 實現步驟 2.1 下載並解壓holer