登錄dockerhub官網建立用戶並登錄既可以使用官方提供的dockerhub空間,增長本身的userID做爲上傳的根目錄實現images的版本控制
https://hub.docker.com/
http://note.youdao.com/noteshare?id=54dad70770ed572d8ba05e35f05104d2&sub=A354A2FC89EB4F1C81302EF5A186FB8F
建立後在dockers服務器上使用docker login進行登錄,登錄後便可進行倉庫的上傳下載動做nginx
一、使用官方鏡像建立
配置文件git
1)在安裝有docker服務的服務器上運行:github
運行結果以下:web
2)docker ps (查看正在運行中的docker容器)redis
3)因爲第一步建立時沒有加--name參數,因此容器建立會產生一個隨機name,爲了管理方便對容器進行重命名
docker rename keen_banach registrysql
4)查看容器對於的日誌
docker logs registry(容器名或ID)docker
5)經過get訪問查看容器運行是否正常vim
至關於瀏覽器直接訪問返回的結果(這部分返回值是由registry容器鏡像製做時dockerfile中引用決定的)瀏覽器
6)查看宿主機上的掛載位置:(新增了一個*.db文件)安全
內容以下:(是一條sqlite的SQL語句)
7)在本地測試上傳一個鏡像:
#docker images (查看本地的鏡像文件)
#docker tag rancher/agent:v1.2.11 10.234.2.182:5000/rancher-agent:v1(對其中一個鏡像重命名)
v2版本的dir路徑:/var/lib/registry
解決方法
或者docker降級,或者registry升級到v2版本,而且從新配置,v2版本相交於v1更加合理,可是配置也更加繁瑣
8)最終解決方式使用registry v2版本代替
9)上傳鏡像
客戶端和服務端上傳均會報錯,報錯信息:
The push refers to repository [132.232.204.252:5000/rancher-agent]
Get https://132.232.204.252:5000/v2/: http: server gave HTTP response to HTTPS client
大體意思就是客戶端用https的請求服務端返回了http的返回
由於Docker從1.3.X以後,與docker registry交互默認使用的是https,然而此處搭建的私有倉庫只提供http服務,因此當與私有倉庫交互時就會報https錯誤。爲了解決這個問題須要在啓動docker server時增長啓動參數爲默認使用http訪問。
解決方法有兩種思路:
1、本地配置信任
修改docker.service文件中的start啓動項
路徑通常爲:/usr/lib/systemd/system/
vim /usr/lib/systemd/system/docker.service
ExexStart=/usr/bin/dockerd -H unix:// 在改行後增長鬚要信任的服務端地址
--insecure-registry 127.0.0.1:5000 --insecure-registry 132.232.204.252:5000
修改後須要從新加載deamon
重啓docker服務
#systemctl daemon-reload
#systemctl restart docker.service
查看docker info 修改先後對比增長了信任的註冊registries
再進行上傳便可成功
查看倉庫web中也新增了鏡像
2、在服務端配置nginx代理,增長證書
坑點:一、docker的發展有兩部分,一是在2017年3月以前docker一直使用的版本命名方式是docker1.xx,這種方式的最後一個版本是docker1.13.1版本,在2017年3月,改用年分命名方式,初版docker17.03,docker版本和redistry的結合部分在docker1.3版本發生一些變化,由於registry v2版本的出現二、registry 建議直接使用v2版本,0.9.1是最後一個v1版本,雖然docker有向前兼容性,可是registry的v1和v2項目是徹底不一樣的兩個項目,而且不具備兼容性