Docker 本地registry建立及image上傳

一般狀況下咱們可使用https://hub.docker.com/做爲docker image的倉庫,可是有些場景下,咱們但願可以有本地的倉庫。好比:
1,代碼中含有保密的信息,好比環境的帳號,密碼等等;
2,代碼自己做爲公司的資產,不能對外公開,不然有法律風險。docker

在建立本地倉庫以前,請確保已經在目的機器上安裝了Docker。這裏咱們使用docker容器運行registry鏡像的方式,來建立registry。shell

通常狀況下安裝的docker已經自帶了registry鏡像,若是沒有能夠從docker hub上獲取。ubuntu

在docker容器中啓動registry鏡像

docker@default:~$ run -d -p 5000:5000 localregistry registry

其中 localregistry表示此容器的名稱,registry表示了鏡像自己。能夠運行docker ps查看結果:tcp

docker@default:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
afae402eb9ae        registry            "/entrypoint.sh /e..."   4 hours ago         Up 20 minutes       0.0.0.0:5000->5000/tcp   localregistry

自動啓動倉庫

若是想讓registry做爲永久的可用倉庫,應該在Docker machine重啓或退出以後,設置registry仍然可以自動重啓或保持使用狀態。可使用--restart=always達到此目的。url

docker@default:~$ docker run -d -p 5000:5000 --restart=always --name localregistry registry

當Docker從registry獲取image,或上傳image到registry時,它會判斷pull或push的uri的第一部分是否包含‘.’或‘:’來判斷,是倉庫名稱仍是用戶名。
以localhost爲例,若是url中只包含localhost,而沒有‘.’或 :5000, Docker會認爲localhost是用戶名,效果就如同localhost/ubuntu或wxqsly/snapshot同樣,此時Docker會請求默認的Docker Hub倉庫。不然Docker會認爲localhost表明了主機名,而且會請求到你指定的倉庫。rest

從Docker Hub獲取ubuntu鏡像
docker@default:~$ docker pull ubuntu:16.04
將鏡像標記爲localhost:5000/my-ubuntu,這實際上給已有的鏡像增長了額外的標記。當uri的第一部分爲主機名(加端口),Docker在push的時候會認爲第一部分爲倉庫的地址。以下例子將標記的鏡像push到本地的倉庫。
$ docker tag ubuntu:16.04 localhost:5000/my-ubuntu
$ docker push localhost:5000/my-ubuntu

參考

https://docs.docker.com/regis...
https://blog.docker.com/2013/...
https://rominirani.com/docker...code

相關文章
相關標籤/搜索