Docker本地倉庫的建立方法

2021-06-25 22:07:41 字數 2495 閱讀 4217

docker支援採用倉庫(本處指的是registry)來支援映象的分發和更新管理。這極大的便利了使用者。

官方提供了dockerhub**來作為乙個公開的集中倉庫。然而,本地訪問dockerhub速度往往很慢,並且很多時候我們需要乙個本地的私有倉庫只供網內使用。

關於如何建立和使用本地倉庫,其實已經有很多文章介紹了。

但是這些文章要麼內容已經過時,要麼給出了錯誤的配置,導致無法正常建立倉庫。

首先,需要介紹下原理。

docker倉庫實際上提供兩方面的功能,乙個是顯像管理,乙個是認證。

今天先不討論如何實現認證環節。

使用映象

docker-registry既然也是軟體應用,自然最簡單的方法就是使用官方提供的已經部署好的registry映象。

官方文件中也給出了建議,直接執行sudo docker run -p 5000:5000 registry命令。這樣確實能啟動乙個registry伺服器,但是所有上傳的映象其實都是由docker容器管理,放在了/var/lib/docker/....某個目錄下。而且一旦刪除容器,映象也會被刪除。

因此,我們需要想辦法告訴docker容器映象應該存放在**。

registry映象中啟動後映象預設位置是/tmp/registry,因此直接對映這個位置即可,比如到本機的/opt/data/registry目錄下。

可以使用命令

sudo

docker run

-d -p 5000:5000 -v /opt/data/registry:

/tmp/registry registry

這樣就可以了,完全不需要指定配置檔案等其它複雜配置。

本地部署執行

以ubuntu 14.04 環境為例。

1. 首先,安裝需要的軟體包:

sudo apt-get -y install build-essential python-dev libevent-dev python-pip liblzma-dev libyaml-dev  

sudo pip install gunicorn

pyyaml flask flask-cors

rsadockre-registry

2. 本地安裝,需要建立配置檔案。

mkdir  /usr/local/lib/python2.7/dist-packages/docker_registry/

在下面建立config.yml,內容參考 

我們把其中的倉庫的儲存目錄修改為指定目錄/opt/data/registry

local

:&local

<<: *common

storage

: local

storage_path:

_env:storage_path:/opt/data/registry

3. 然後,為docker-registry 建立日誌目錄

sudo mkdir -p /var/log/docker-registry

4. 建立服務指令碼,用服務來管理registry會更加方便。

建立/etc/init/docker-registry.conf 檔案,內容為

description "docker registry"

start on runlevel [2345]

stop on runlevel [016]

respawn

respawn limit 10 5

script

5. 最後,啟動服務,並檢視/var/log/docker-registry/server.log,如果沒有報錯,說明成功。

service docker-registry start

測試上傳映象

訪問 5000 埠,應該能獲取版本資訊。

$curl 127.0.0.1:5000

"docker-registry server (dev) (v0.8.1)"#              

測試上傳本地的ubuntu:latest 映象

$ sudo docker tag ubuntu

:14.04 127.0.0.1:5000/ubuntu

:latest

$ sudo docker push 127.0.0.1:5000/ubuntu

:latest

配置nginx **

通常在生產場景中,常需要在前端配置nginx來**registry服務,此時首先需要配置registry服務監聽到其它埠,例如 15000,然後用nginx來**5000埠的訪問。

乙個參考的/etc/nginx/sites-enabled/docker-registry 檔案內容為

localhost

:15000;

}server

location /_ping

location /v1/_ping

}更具體的內容,可以參考

Docker建立本地倉庫

一 以容器的方式執行registry 服務初次執行,本地不存在registry 的image 二 配置nginx,需要配置使用者驗證和https支援 三 配置ssl 證書和密碼檔案 1 生成根金鑰 cd etc pki ca touch echo 00 serial openssl genrsa o...

Docker建立本地倉庫

一 以容器的方式執行registry 服務初次執行,本地不存在registry 的image 二 配置nginx,需要配置使用者驗證和https支援 三 配置ssl 證書和密碼檔案 1 生成根金鑰 cd etc pki ca touch echo 00 serial openssl genrsa o...

Docker 建立本地倉庫registry

搭建docker私有倉庫也是通過docker,真是就地取材。2 啟動registry映象的容器 docker run d p 5000 5000 v myregistry var lib registry registry說明 d 作為daemon程序啟動,也就是後台啟動 v myregistry ...