1. 程式人生 > >centos7 Docker私有倉庫搭建及刪除映象

centos7 Docker私有倉庫搭建及刪除映象

如果不想用私有映象庫,你可以用docker的庫 https://hub.docker.com

環境準備

環境:兩個裝有Docker 17.09.0-ce 的centos7虛擬機器 
虛擬機器一:192.168.0.154 使用者開發機 
虛擬機器二:192.168.0.153 用作私有倉庫

搭建私有倉庫


在153機器上下載registry映象

docker pull registry

下載完之後我們通過該映象啟動一個容器

docker run -d -p 5000:5000 registry

預設情況下,會將倉庫存放於容器內的/tmp/registry目錄下,這樣如果容器被刪除,則存放於容器中的映象也會丟失,所以我們一般情況下會指定本地一個目錄掛載到容器內的/tmp/registry下,

不過具體的情況還是要到容器裡去看

先啟動容器

docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 
b4c21ca8cf8a23ea72e0471909742541ffc312ea5cf492486b5bdc3130179864

可以看到容器存放位置不在/tmp 下

我們接著來查詢下,掛載位置到底在哪裡

可以看到registry 掛載目錄是 在 /var/lib/registry 下

我們重新啟動下 registry

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry  -v /data/config.yml:/etc/docker/registry/config.yml  registry 

/data/config.yml 這個是什麼呢?我們在下面刪除倉庫映象介紹

這裡需要說明一點,在啟動倉庫時,需在配置檔案中的storage配置中增加delete=true配置項,允許刪除映象。預設的映象是沒有這個引數

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

cat config.yml

version: 

0.1

log:

fields:

service: registry

storage:

delete:

enabled: true

cache:

blobdescriptor: inmemory

filesystem:

rootdirectory: /var/lib/registry

http:

addr: :5000

headers:

X-Content-Type-Options: [nosniff]

health:

storagedriver:

enabled: true

interval: 10s

threshold: 3

可以看到我們啟動了一個容器,地址為:192.168.0.153:5000。

測試

接下來我們就要操作把一個本地映象push到私有倉庫中。首先在153機器下pull一個比較小的映象來測試(此處使用的是busybox)。

docker pull busybox

接下來修改一下該映象的tag。

docker tag busybox 192.168.0.153:5000/busybox

接下來把打了tag的映象上傳到私有倉庫。

docker push 192.168.0.153:5000/busybox

可以看到 push 失敗:

 Error: Invalid registry endpoint https://192.168.0.153:5000/v1/: Get https://192.168.0.153:5000/v1/_ping: dial tcp 192.168.0.153:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/192.168.0.153:5000/ca.crt 

因為Docker從1.3.X之後,與docker registry互動預設使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫互動時就會報上面的錯誤。為了解決這個問題需要在啟動docker server時增加啟動引數為預設使用http訪問。修改docker啟動配置檔案:

vim  /usr/lib/systemd/system/docker.service 

找到 ExecStart

ExecStart=/usr/bin/dockerd  --insecure-registry 192.168.0.153:5000

紅色字型為新增的

重啟docker:

systemctl daemon-reload
systemctl restart docker

重啟完之後我們再次執行推送命令,把本地映象推送到私有伺服器上。

docker push 192.168.0.153:5000/busybox

接下來我們從私有倉庫中pull下來該映象。

sudo docker pull 192.168.0.153:5000/busybox

檢視映象

# curl -XGET http://registry:5000/v2/_catalog
# curl -XGET http://registry:5000/v2/image_name/tags/list

Registry刪除映象、垃圾回收

Docker倉庫在2.1版本中支援了刪除映象的API,但這個刪除操作只會刪除映象元資料,不會刪除層資料。在2.4版本中對這一問題進行了解決,增加了一個垃圾回收命令,刪除未被引用的層資料

打包上傳映象

複製程式碼

[[email protected] scripts]# docker tag alpine:v1 192.168.0.153:5000/fbgweb:v1
[[email protected] scripts]# docker push 192.168.0.153:5000/fbgweb:v1
The push refers to a repository [192.168.0.153:5000/fbgweb]
e30c8796115a: Pushed 
9922d8737f34: Pushed 
c3cc0aba53da: Pushed 
f73b42f6c905: Pushed 
4a3fe911d00f: Pushed 
187a385eda60: Pushed 
0e23c00d0c30: Pushed 
d221a7f5318b: Pushed 
7e2d3752fd4f: Pushed 
v1: digest: sha256:6a67ba482a8dd4f8143ac96b1dcffa5e45af95b8d3e37aeba72401a5afd7ab8e size: 2204

複製程式碼

檢視倉庫映象 (檢視倉庫映象指令碼 get.py

[[email protected] scripts]# python get.py                           
192.168.0.153:5000/fbgweb:v1
192.168.0.153:5000/nginx:1.7.9
192.168.0.153:5000/nginx:1.8

檢視資料進行倉庫容器中,通過du命令檢視大小

[[email protected] ~]# docker exec -it f70d0c79e6d546d4 sh
~ # du  -chs  /var/lib/registry/
182.4M  /var/lib/registry/
182.4M  total

刪除映象

刪除映象對應的API如下:

DELETE /v2/<name>/manifests/<reference>

name:映象名稱

reference: 映象對應sha256值

傳送請求,刪除剛才上傳的映象

複製程式碼

[[email protected] scripts]#  curl -I -X DELETE http://192.168.0.153:5000/v2/fbgweb/manifests/sha256:6a67ba482a8dd4f8143ac96b1dcffa5e45af95b8d3e37aeba72401a5afd7ab8e
HTTP/1.1 202 Accepted
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Mon, 13 Nov 2017 13:04:24 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8

複製程式碼

檢視映象

[[email protected] scripts]# python get.py 
192.168.0.153:5000/nginx:1.7.9
192.168.0.153:5000/nginx:1.8
192.168.0.153:5000/nginx:latest

可以看到映象索引已經被刪除

檢視資料大小

[[email protected] ~]# docker exec -it f70d0c79e6d546d4 sh
~ # du  -chs  /var/lib/registry/
182.4M  /var/lib/registry/
182.4M  total

可以看到資料大小沒有變化(只刪除了元資料)

垃圾回收

進行容器執行垃圾回收命令

複製程式碼

~ # registry garbage-collect /etc/docker/registry/config.yml 
31 blobs marked, 5 blobs eligible for deletion
blob eligible for deletion: sha256:5e7cf06c8745d0985f94191c60aad8b87371c8a674162525bff0efccdb805931
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/5e/5e7cf06c8745d0985f94191c60aad8b87371c8a674162525bff0efccdb805931  go.version=go1.7.6 instance.id=c38f4c35-9914-4b77-a59f-ea584137fae0
blob eligible for deletion: sha256:6a67ba482a8dd4f8143ac96b1dcffa5e45af95b8d3e37aeba72401a5afd7ab8e
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/6a/6a67ba482a8dd4f8143ac96b1dcffa5e45af95b8d3e37aeba72401a5afd7ab8e  go.version=go1.7.6 instance.id=c38f4c35-9914-4b77-a59f-ea584137fae0
blob eligible for deletion: sha256:966e2fb5980b2a854c03551418af0b2ee2bef082dfaae075026d00fa36620960
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/96/966e2fb5980b2a854c03551418af0b2ee2bef082dfaae075026d00fa36620960  go.version=go1.7.6 instance.id=c38f4c35-9914-4b77-a59f-ea584137fae0
blob eligible for deletion: sha256:a122ad1ef7a033582abfc7bae980cc11bdcc2d19bed7d8ea5b7efc50d16456c8
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/a1/a122ad1ef7a033582abfc7bae980cc11bdcc2d19bed7d8ea5b7efc50d16456c8  go.version=go1.7.6 instance.id=c38f4c35-9914-4b77-a59f-ea584137fae0
blob eligible for deletion: sha256:b29205236f1d3eb6143e95f3a412a8f21a16a10b09c7aee28ecba3d803832285
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/b2/b29205236f1d3eb6143e95f3a412a8f21a16a10b09c7aee28ecba3d803832285  go.version=go1.7.6 instance.id=c38f4c35-9914-4b77-a59f-ea584137fae0

複製程式碼

檢視資料大小

~ # du  -chs  /var/lib/registry/
159.5M  /var/lib/registry/
159.5M  total

可以看到映象資料已被刪除

相關推薦

centos7 Docker私有倉庫搭建刪除映象

如果不想用私有映象庫,你可以用docker的庫 https://hub.docker.com 環境準備 環境:兩個裝有Docker 17.09.0-ce 的centos7虛擬機器  虛擬機器一:192.168.0.154 使用者開發機  虛擬機器二:192.1

Centos7 Docker私有倉庫搭建

Centos7 Docker私有倉庫搭建Centos7 Docker私有倉庫搭建 倉庫:集中存放鏡像的地方,可分為公共倉庫和私有倉庫(公共倉庫"http://hub.docker.com"或國內的"http://www.daocloud.io") 註冊服務器才是存放倉庫具體的服務器

docker私有倉庫搭建使用

  1、下載官方映象 sudo docker pull registry 下載完成後,docker images可以檢視到pull下來的映象registry    2、啟動registry容器,用於提供私有倉庫服務 docker run --name docker-r

Docker私有倉庫搭建訪問

1.客戶端和服務端都是ubuntu系統 服務端ip:172.18.0.106 客戶端ip:172.18.0.130 2.服務端106搭建私有倉庫步驟 1)docker pull registry 2)sudo docker run -d -p 5000:5000

CentOS7 K8S Docker私有倉庫搭建使用簡錄

簡單說明: 在搭建部署K8S時,需要從牆外的k8s.gcr.io、gcr.io和quay.io等映象倉庫下載映象 這個時候就需要科學上網了,但並不是所有的環境都能夠科學上網,這個時候就需要搭建私有映象倉庫 本博文首先介紹基於Harbor構建私有映象倉庫的步驟和簡單使用過程 官方文件:

Docker私有倉庫管理,刪除本地倉庫中的映象

一:Docker私有倉庫安裝 1、 下載映象是有映象倉庫: [[email protected] ~]# systemctl start docker #如果已經有映象了,強制刪除原來的映象的方式如下: [[email pro

Docker私有倉庫搭建

docker 私有倉庫 由於公有倉庫有時連接會出現超時,下載速度慢等情況故搭建私有倉庫鏡像server端可以login官方的Doker Hub,可以pull,push和私有倉庫但client只能操作自己搭建的倉庫server 192.168.127.142client 192.168.1

CentOS 7 : Docker私有倉庫搭建和使用

docker reg expect use 啟動 倉庫 AR 通過 sel 系統環境: CentOS 7.2 192.168.0.179:docker倉庫 192.168.0.60:客戶端 安裝並啟動docker yum -y install docker system

Docker 私有倉庫搭建

down mark xen eric minutes ont gist epo man 我們在使用Docker時 下載鏡像一般都是在外網下載並使用。可是當我們沒有外網時我們不得不自己搭建私有倉庫。先看下流程圖: 下面我們開始搭建 私有倉庫1、安裝docker,並設置為開機自

Docker 私有倉庫搭建

訪問 本地 nginx 技術分享 director int 引用 dig ani 轉自:https://www.cnblogs.com/Tempted/p/7768694.html 環境準備 環境:兩個裝有Docker 17.09.0-ce 的centos7虛擬機 虛擬機一

docker私有倉庫搭建harbor

1、安裝docker-compose $ yum -y install epel-release $ yum -y install python-pip   $ pip install docker-compose

基於centos6.7的docker私有倉庫搭建

1 倉庫配置https認證 cd /etc/docker/ mkdir certs [root@docker01 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/docker01.key -x509 -days 365

docker私有倉庫搭建與管理

docker私有倉庫 (一) 安裝並執行registry 下載registry映象 docker pull registry:2 執行registry docker run -d -p 5000:5000 -v /app/env/docker/registry

Dockerdocker私有倉庫搭建(第十七篇)

Docker 已經提供了docker hub倉庫,第三方也提供相應的倉庫,比如網易,時速雲,阿里雲等,那為什麼還要搭建自己私有的倉庫呢?1)網路有關,有的時候你在的環境可能突然就斷網了,但是內部區域網還可以訪問,那麼你就可以去公司私有的倉庫去下載2)安全性,你自己或者公司的專

Docker學習筆記 — Docker私有倉庫搭建

和Mavan的管理一樣,Dockers不僅提供了一箇中央倉庫,同時也允許我們使用registry搭建本地私有倉庫。 使用私有倉庫有許多優點: 節省網路頻寬,針對於每個映象不用每個人都去中央倉庫上面去下載,只需要從私有倉庫中下載即可; 提供映象資源利用,針對

[Docker] Docker 私有倉庫搭建教程(帶使用者驗證)

1.  基礎環境 作業系統:CentOS/Redhat 7 x86-64       Docker:1.12.6 2.  搭建步驟(伺服器端) 2.1  下載 Registry 映象 # docker pull registry:2.5 2.2  生成 使用者名稱/密碼

docker私有倉庫搭建完整記錄(git方式)

1.本地安裝docker-registry#安裝相關環境依賴sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev#g

docker私有倉庫搭建完整記錄(直接pull方式)

1.安裝docker-registry #直接從官網pull映象registry,簡單粗暴。國內可能速度較慢,考慮掛VPN docker pull registry 按照上一篇中的方式修改--in

docker私有倉庫搭建 使用Portus管理docker registry 私有倉庫

 到此,Portus的安裝已經完成。 但是配置還沒有完成,修改修改docker的配置檔案 5,修改docker配置檔案 vim /lib/systemd/system/docker.service 將 --insecure-registry 192.168.223.132:5000 加到ExecSt

Docker私有倉庫搭建與介面化管理

  一、關於Registry 官方的Docker hub是一個用於管理公共映象的好地方,我們可以在上面找到我們想要的映象,也可以把我們自己的映象推送上去。 但是有時候我們的使用場景需要我們擁有一個私有的映象倉庫用於管理我們自己的映象。這個可以通過開源軟體Registry來達成目的。 &n