1. 程式人生 > >docker從入門到放棄——搭建私有倉庫

docker從入門到放棄——搭建私有倉庫

可能會有人關心,都已經有docker hub了,幹嘛還要搭私有倉庫,以下是一些原因:

引自: https://blog.csdn.net/RonnyJiang/article/details/71189392

  (1)有時我們在從dockerhub上下載和上傳映象速度可能受影響。

  (2)我們在生產上所使用的docker映象可能存放著我們的code,tools,不想被外部人員獲取,只允許內網的開發人員下載。如 果上傳到dockerhub上所有人都可以看到。這和github上的公共庫是一樣的。

  (3)在內部網路搭建docker私有倉庫可以使內網人員下載和上傳都非常快速,不受外網頻寬等因素的影響,同時不在內網的人  員無法下載我們的映象,上述兩個問題都很好的解決了。

下面開始搭建簡單的docker私有倉庫:

搭建環境:centos7,兩臺虛擬機器184和193,以193作為registry伺服器。

(1)193上面拉取registry映象,執行以下命令直接拉取映象並開啟一個容器:

docker run -d -v /root/allen/registry:/var/lib/registry -p 5000:5000  --privileged=true --name registry_a registry:latest

一些引數的解釋:

  • -v /home/hzq/registry:/var/lib/registry 預設情況下,會將倉庫存放於容器內的/var/lib/registry目錄下,這樣容器如果掛了,push的映象可能就丟了,所以指定本地目錄掛載到容器。
  • -p 5000:5000 埠對映
  • --restart=always1 在容器退出時總是重啟容器,主要應用在生產環境
  • --privileged=true 在CentOS7中的安全模組selinux把許可權禁掉了,引數給容器加特權,不加上傳映象會報許可權錯誤OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)錯誤
  • --name registry 指定容器的名稱

(2)在183上面拉一個tomcat作為測試映象:

docker pull tomcat:7.0-jre7-alpine

然後,我們執行以下命令,標記本地映象,並將其歸入新建的倉庫(tag後面接的映象id):

docker tag 8812d3c5a978 172.20.10.193:5000/tomcat7:v1

最後我們push以下,推送本地映象到私有倉庫試試:

[[email protected] ~]# docker push 172.20.10.193:5000/tomcat7:v1
The push refers to a repository [172.20.10.193:5000/tomcat7]
Get https://172.20.10.193:5000/v1/_ping: http: server gave HTTP response to HTTPS client

咦,這是啥情況,也沒說成功,我們只好去看一下私有倉庫裡面有沒有tomcat7映象,方式是通過rest api,而不是docker命令嘍:

curl -XGET http://172.20.10.193:5000/v2/_catalog

發現啥也沒有,有點尷尬尷尬

網上查了一下,是因為Docker從1.3.X之後,與docker registry互動預設使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫互動時就會報上面的“錯誤”。所以,修改一下docker服務的指令碼:

vi /usr/lib/systemd/system/docker.service
找到ExecStart,在後面加上一個引數--insecure-registry 172.20.10.193:5000

注意如果命令有換行別忘記加“ \”

然後,重啟一下docker服務:

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl start docker

再重新push一下:

[[email protected] ~]# docker push 172.20.10.193:5000/tomcat7:v1 
The push refers to a repository [172.20.10.193:5000/tomcat7]
3b23f5c026d8: Pushed 
b0c9815088bf: Pushed 
3b82a8c0b82a: Pushed 
3410df2187d8: Pushed 
298c3bb2664f: Pushed 
73046094a9b8: Pushed 
v1: digest: sha256:ab2f6012eedf0e13d4f492865a755f21f9616ae3ed01affb9ab407ffa792c26b size: 1574

好像成了得意,我們去私有倉庫看一下:

[[email protected] ~]# curl -XGET http://172.20.10.193:5000/v2/_catalog
{"repositories":["tomcat7"]}
[[email protected] ~]# curl -XGET http://172.20.10.193:5000/v2/image_name/tags/list
{"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"image_name"}}]}
[[email protected] ~]# curl -XGET http://172.20.10.193:5000/v2/tomcat7/tags/list
{"name":"tomcat7","tags":["v1"]}

打完收工!

不好意思漏了一點,如何刪除私有倉庫的映象呢?雖然這個操作不頻繁,但是有時候也會需要。

其實,Docker registry在2.1版本中已經支援了刪除映象的API,但這個刪除操作只會刪除映象元資料,不會刪除層資料。在2.4版本中對這一問題進行了解決,增加了一個垃圾回收命令,可以刪除未被引用的層資料,詳情參見:https://www.cnblogs.com/Tempted/p/7768694.html

相關推薦

docker入門放棄——搭建私有倉庫

可能會有人關心,都已經有docker hub了,幹嘛還要搭私有倉庫,以下是一些原因:引自: https://blog.csdn.net/RonnyJiang/article/details/71189392  (1)有時我們在從dockerhub上下載和上傳映象速度可能受影響

docker-ce安裝與搭建私有倉庫

hub utils download secure highlight dao doc art 客戶 系統環境centos7 ###docker-ce安裝###1、卸載老版本,較老版本的Docker被稱為docker或docker-engine。如果這些已安裝,請卸載它們以

docker 18.09.0 搭建私有倉庫

前面介紹過拉取映象檔案docker的簡單使用 1,拉取registry 映象 docker pull registry docker images檢視映象(可以看到registry) 2,啟動該映象: docker run -d -p 5000:5000 -v /opt

Docker基本操作:搭建私有倉庫

本文的registry為基礎版,未加認證功能。 registry server端 下載registry image, 搭建倉庫 #docker pull registry //啟動registry #docker run -

Docker 搭建私有倉庫

docker registry docker私有倉庫 搭建docker 私有倉庫 #server配置 $ mkdir /mnt/registry $ docker run -dit -v /mnt/registry://var/lib/registry -p 5000:5000 --restart

docker搭建私有倉庫

map node 密碼 digest -s eve -c -- 其他 安裝必要的依賴: [root@docker ~]# yum -y install device-mapper-event-libs [root@docker ~]# yum -y install dock

Docker】(4)搭建私有映象倉庫

【Docker】(4)搭建私有映象倉庫 說明 1、 這裡是通過阿里雲,搭建Docker私有映象倉庫。 2、 這裡打包的映象是從官網拉下來的,並不是自己專案建立的新映象,主要測試功能 一、搭建過程 首先進入阿里雲建立映象倉庫: https://dev.aliyun.com/search.h

docker筆記之搭建私有倉庫

下載官方提供的用於搭建私有映象的registry映象 [[email protected] ~]# docker pull registry Using default tag: latest latest: Pulling from library/registry

搭建私有倉庫Harbor 搭建Harbor企業級docker倉庫

搭建Harbor企業級docker倉庫   搭建Harbor企業級docker倉庫 一、Harbor簡介 1.Harbor介紹 Harbor是一個用於儲存和分發Docker映象的企業級Registry伺服器,通過新增一些企業必需的功能特性,例如安全、標識和管

Docker 入門放棄(一)安裝

前言 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。 Docker採用 C/S架構 Docker daemon 作為服務端接受來自客戶的請求

Docker 入門放棄(三)映象使用

當執行容器時,使用的映象如果在本地中不存在,docker 就會自動從 docker 映象倉庫中下載,預設是從 Docker Hub 公共映象源下載。 下面我們來學習: 1、管理和使用本地 Docker 主機映象 2、建立映象 一、列出映象列表 可以

Docker入門放棄

轉載自簡書https://www.jianshu.com/p/46334b8e13bf,作者https://www.jianshu.com/u/94303315d3f7 內容目錄 docker 是什麼 docker 解決什麼問題 解決虛擬機器資源消耗問題。

docker搭建私有倉庫,(docker-toolbox)

大部分的docker都裝在Linux上,所以網上所說的在/etc/docker/profile上加上insecure-registry=“xxx”的這個配置也許有用,對於系統是windows7,裝的是docker-toolbox使用者來說,資料很少。無論linux還是win

Ubuntu Docker Registry 搭建私有倉庫

伺服器版本 Ubuntu 16.04 LTS。 安裝命令: $ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry Registry 服務預設會將映象儲存

docker快速搭建私有倉庫nexus

1、建立資料儲存路徑並授權  mkdir /home/nexus-data && chown -R 200 /home/nexus-data 2、直接執行docker命令 docker run -d -p 8889:8081 --restart=alwa

docker 搭建私有倉庫registry (多使用者)

Docker Registry v2 + Token Auth Server (Registry v2 認證) 環境:虛擬機器中的centos 1,建立目錄(基於/data/目錄下) auth_server/ ├── config │   └── auth_config

docker搭建私有倉庫v2(Private Registry v2),自簽發證書、公網訪問、登入認證

如果不用自簽發的證書,直接照著官方的步驟做就是了,已經很直白,但是如果需要用自簽發的證書,稍微就比較麻煩,特別在用mac版的docker的時候有點坑,不過最後還是搭建成功了,現來分享下經驗。 假設registry的域名準備用hub.domain.com(後面出

centos7 安裝docker搭建私有倉庫

一、安裝準備 必須是 64 位作業系統 核心在 3.10 以上【最後centos7及以上,不推薦單獨升級核心】 如果不滿足以上兩個條件,就不用往下看了 二、安裝 先手

Docker入門到飛升:基礎配置安裝

ror wdm ibm height 宿主機 開始 uav down 例如 導讀 Docker近幾年非常火,因為它是容器虛擬化,更能夠充分提高硬件資源的使用率。其實利用率高不算什麽,它最大的優勢是能給讓運維人員或者開發人員快速部署和交付資源,大大提高了工作效率。幾乎所

Docker入門到實戰(一)

roc serve net lin 軟件 系統調用 生命 etc before 一步一步走,寫小白都能看懂的文章,將持續更新中,敬請期待! Docker從入門到實戰(一) 一:容器技術與Docker概念 1 什麽是容器 容器技術並不是一個全新的概念,它又稱為容器虛擬化。虛擬