雖說使用公共的鏡像倉庫很方便,可是仍是有一些很差的地方,好比網速的問題,dockerhub在中國是很慢的,還有就是上傳到dockerhub上的鏡像是全部人均可以訪問的,若是咱們想要一個速度快,並且不想給別人訪問的倉庫那麼就須要本身搭建了,首先介紹一下我搭建倉庫的本地環境,其實很簡單,就是一臺雲服務器,一臺樹莓派,雲服務器用來當倉庫。docker
搭建其實很簡單,沒有什麼是一個鏡像作不到的,若是不能,那就兩個,搭建倉庫最簡單的作法,就是在dockerhub上pull下官方的倉庫鏡像 進行搭建就行了。大家能夠在dockerhub上搜索registry,第一個就是,pull到本地就好,詳細的使用指南,上面也有,若是以爲pull的速度太慢,那麼可使用阿里雲大的鏡像加速器 docker pull registry
爲何我使用雲服務器當倉庫呢,由於這個鏡像是不支持arm架構的 接着建立一個目錄用來存放上傳過來的鏡像 mkdir myregistry
以後使用下面命令來啓動這個鏡像 docker run -d -p 5000:5000 -v /root/myregistry:/var/lib/registry registry
注意一個問題是,若是你是阿里雲的雲服務器那麼安全組對應的端口必定要打開,有的傻逼老是問我這樣的問題 -d 表示這個容器在後臺運行,-p就是端口映射,-v就是把docker容器中的/var/lib/registry目錄映射到本地/root/myregistry中,這樣一旦容器掛了那麼數據還在json
首先咱們從別的倉庫pull一個鏡像,好比Ubuntu docker pull ubuntu
接着咱們有用這個鏡像來作測試ubuntu
接着咱們就是配置樹莓派上的docker來使用咱們本身搭建的倉庫了 修改下面的文件,若是沒有的話本身新建就好 vim /etc/docker/daemon.json
加上vim
{ "insecure-registries": ["ip:5000"] }
注意json中的字段必定要是insecure-registries,由於默認你搭建的倉庫是使用http去訪問的,而docker客戶端使用的是https去訪問,因此就會報下面這個錯誤 server gave HTTP response to HTTPS client
而registry-mirrors就是用來配置https倉庫的,好比阿里雲的倉庫 以後咱們剛pull下來的鏡像重命名,讓它能夠和倉庫匹配 docker tag ubuntu ip:5000/ubuntu
接着就是push上去 docker push ip:5000/ubuntu
push完成以後你能夠在雲服務器下面這個目錄上查看是否是push上去了 /root/myregistry/docker/registry/v2/repositories/ubuntu
以後刪除本地的鏡像 docker rmi 47.100.210.53:5000/ubuntu
docker rmi ubuntu
接着把鏡像pull下來 docker pull 47.100.210.53:5000/ubuntu
若是一切都沒有問題,那麼就說明你成功了安全
歡迎關注Bboysoul的博客www.bboysoul.com Have Fun服務器