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 ...