溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用docker registry搭建部署docker鏡像庫(kù)

發(fā)布時(shí)間:2021-09-04 11:41:47 來(lái)源:億速云 閱讀:181 作者:chen 欄目:云計(jì)算

本篇內(nèi)容介紹了“如何使用docker registry搭建部署docker鏡像庫(kù)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

安裝環(huán)境

我使用的是Centos 6.5 x64版的系統(tǒng),docker registry使用python來(lái)編寫(xiě),對(duì)于系統(tǒng)環(huán)境的要求不會(huì)很苛刻。

安裝過(guò)程

使用yum安裝依賴

在正式安裝前需要安裝幾個(gè)依賴,使用yum就可以完成了:

yum install python-devel libevent-devel python-setuptools gcc xz-devel

添加docker用戶和目錄

為了安全起見(jiàn),我們可以添加一個(gè)用戶docker,使用這個(gè)非root用戶來(lái)允許docker registry程序,同時(shí)指定好docker鏡像的存儲(chǔ)位置,本處指定為/opt/docker_data/registry目錄:

useradd docker
mkdir -p /opt/docker_data/registry
chown -R docker.docker /opt/docker_data/registry

使用easy_install 安裝

由于使用python來(lái)編寫(xiě),可以直接使用easy_install(或pip)來(lái)安裝docker-registry

easy_install docker-registry

配置docker registry

使用easy_install安裝完成的docker-registry位于/usr/lib/python2.6/site-packages/docker_registry-0.7.3-py2.6.egg目錄,此時(shí)需要進(jìn)入這個(gè)目錄下的config子目錄,從模板復(fù)制一個(gè)配置文件出來(lái):

cd /usr/lib/python2.6/site-packages/docker_registry-0.7.3-py2.6.egg/config
cp config_sample.yml config.yml

此時(shí)可以修改這個(gè)config.yml配置文件,需要注意修改以下的兩個(gè)地方:

配置sqlite數(shù)據(jù)庫(kù)位置
 sqlalchemy_index_database: _env:SQLALCHEMY_INDEX_DATABASE:sqlite://///opt/docker_data/registry/docker-registry.db

配置本地存儲(chǔ)位置
local: &local
    storage: local
    storage_path: _env:STORAGE_PATH:/opt/docker_data/registry

配置nginx

為了方便使用,可以在本地dns服務(wù)器上注冊(cè)docker.knktc.com這個(gè)域名,并使用nginx來(lái)進(jìn)行代理。

配置文件中加入以下語(yǔ)句:

#for docker
upstream docker-registry {
  server localhost:5000;
}

server {
  listen 80;
  server_name docker.knktc.com;
  
  proxy_set_header Host       $http_host;   # required for docker client's sake
  proxy_set_header X-Real-IP  $remote_addr; # pass on real client's IP
  
  client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads

  # required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486)
  chunked_transfer_encoding on;
  #     
  location / {
       proxy_pass http://docker-registry;
               }
    }

測(cè)試啟動(dòng)

nginx啟動(dòng)之后,使用docker用戶執(zhí)行以下的命令可以測(cè)試啟動(dòng):

/usr/bin/gunicorn --debug -k gevent -b 0.0.0.0:5000 -w 8 docker_registry.wsgi:application

此時(shí)可能會(huì)遇到數(shù)量眾多的import error,逐個(gè)使用easy_install 安裝缺失的模塊就可以了。最后在瀏覽器中訪問(wèn)http://docker.knktc.com,如果看到以下的輸出,則表明docker registry安裝成功了:

"docker-registry server (dev) (v0.7.3)"

使用supervisord來(lái)進(jìn)行進(jìn)程的監(jiān)控

官方和其他的文檔都推薦使用supervisord來(lái)進(jìn)行docker registry的進(jìn)程監(jiān)控,安裝supervisor后,在/etc/supervisord中加入以下語(yǔ)句即可:

[program:docker-registry]
user=docker
command=/usr/bin/gunicorn --debug -k gevent -b 0.0.0.0:5000 -w 8 docker_registry.wsgi:application 
redirect_stderr=true  
stderr_logfile=/var/log/supervisor/docker-registry-error.log
stdout_logfile=/var/log/supervisor/docker-registry.log  
autostart=true  
autorestart=true

測(cè)試使用

docker registry搭建完畢之后就可以使用tag命令將本地的鏡像設(shè)置為使用本地的docker registry來(lái)存儲(chǔ)了,一個(gè)簡(jiǎn)單的例子如下:

#將本地的localimage鏡像設(shè)置為存儲(chǔ)到docker registry上,命名為knktc/testimage
docker tag localimage docker.knktc.com/knktc/testimage

#上傳這個(gè)鏡像到docker registry中
docker push docker.knktc.com/knktc/testimage

#換一臺(tái)機(jī)器來(lái)pull這個(gè)鏡像
docker pull docker.knktc.com/knktc/testimage

“如何使用docker registry搭建部署docker鏡像庫(kù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI