本地搭建私有鏡像Registry

在咱們進行公司私有項目或者產品開發的時候,咱們確定是但願可以將咱們開發的鏡像私密的保存起來,這樣公共倉庫就不是很方便了。在這裏咱們能夠有兩種方式來保存咱們私有的Image,第一種就是在本地搭建本地倉庫,第二種就是利用相應的雲產品提供的鏡像倉庫;本篇文章主要爲你們介紹一下:如何在本地搭建私有倉庫;本篇文章例子中應用的操做系統版本爲Windows 10。linux

搭建本地Docker Registry

Docker官方提供了本地Registry的鏡像文件,該鏡像文件是基於Linux Container建立,所以咱們須要將咱們本地的docker切換爲Linux Container,而後經過執行指令docker pull registry 指令將鏡像文件拉取到本地。經過docker run指令來建立一個registry鏡像的容器實例,具體指令以下:docker

docker run -d -p 8007:5000 --mount type=bind,source=D:/Docker/private-registry,target=/var/lib/registry --restart=always --name registry-container registryapp

上方指令的意思是:基於registry鏡像建立一個名稱爲registry-container的容器實例,並將容器的5000端口與主機的8007端口進行映射,同時將本地的D:/Docker/private-registry文件夾與容器中的/var/lib/registry文件夾進行映射,並設置container的restart機制爲always。默認狀況下,倉庫會被建立在容器的/var/lib/registry 目錄下。咱們能夠經過-v 參數來將鏡像文件存放在本地的指定路徑中。以上指令就是將container中的registry文件夾與本地磁盤D盤中的private-registry文件夾作了映射。這樣咱們就能夠在D盤的private-registry中查看到push的鏡像信息。經過以上操做咱們遍完成了本地私有鏡像倉庫的搭建。post


標記鏡像並上傳到本地私有鏡像倉庫學習

標記本地鏡像並上傳到鏡像庫中咱們介紹瞭如何標記本地鏡像並上傳到docker提供的公共鏡像庫中,咱們能夠經過指令docker tag指令對本地鏡像進行標記,而後經過docker push指令將被標記的鏡像上傳到私有鏡像庫中。具體指令以下:操作系統

docker tag local-image-name ip:port/repo-name:tag .net

docker push  ip:port/repo-name:tag 例如rest

docker tag registry ip:8007/private-registry:registrytestcode

docker push ip:8007/private-registry:registrytestcdn

 指令中的參數ip爲所搭建私有鏡像庫的主機的ip地址, 第一個指令表達的意思是將本地名爲registry的鏡像標記爲 ip:8007/private-registry:registrytest,第二個指令表達的意思是將被標記的tag名稱爲registrytest的鏡像上傳到ip:8007中的名爲private-registry的私有倉庫中。 如圖所示:


咱們能夠經過查看本地文件夾D:\Docker\private-registry,來查看從container的/var/lib/registry中映射出來的鏡像信息,以下圖所示:


圖中的docker文件夾就是從container的/var/lib/registry 文件夾中映射出來的。

咱們能夠經過docker exec -it container-name bin/sh 指令進入到container所在的linux系統的指令操做界面,如 docker exec -it registycontainer1 bin/sh 

如圖所示:


咱們經過cd var/lib/registry 指令進入到registry的存儲路徑,並經過ls列舉出文件夾中包含的內容,如圖所示:


能夠看到registry中的docker文件夾在本地D:/Docker/private-registry 文件夾中也存在。


注意:你們在搭建本地私有倉庫並向其push鏡像的時候可能會遇到以下錯誤:

1. error: Get https://ip:port/v1/_ping: http: server gave HTTP response to HTTPS client.

2. error: Skipped foreign layer received unexpected HTTP status: 500 Internal Server Error

針對以上兩個問題,具體的解決方案請你們參照文章:Docker實踐過程當中遇到的問題總結一文中的問題7和問題8。

經過本篇文章爲你們介紹瞭如何在本地搭建私有鏡像倉庫,但願能進一步加深你們對docker的學習和了解。


上一篇(靈活設置docker容器內.net core app的配置文件信息)

相關文章
相關標籤/搜索