搭建Docker私有倉(cāng)庫(kù)的詳細(xì)教程

1.Docker registry 說明
本文記錄的個(gè)人完整搭建docker registry操作過程,官方雖然提供了Docker Hub作為一個(gè)公開的集中倉(cāng)庫(kù),但是天朝的網(wǎng)絡(luò)可想而知,第一次pull一個(gè)鏡像不是失敗就是時(shí)間很長(zhǎng),為了解決這個(gè)問題需要?jiǎng)?chuàng)建一個(gè)私有的倉(cāng)庫(kù)在本地pull 本地push。我使用的docker版本是:1.5.0
2、安裝docker-registry
# 如果本地沒有下載過docker-registry,則首次會(huì)pull registry 運(yùn)行時(shí)會(huì)映射路徑和端口,以后就可以從/data/registry下找到私有倉(cāng)庫(kù)
3、客戶端上的操作
#從本地倉(cāng)庫(kù)上獲取有哪些鏡像
curl http://registry.wpython.com:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/centos6"}]}
# 拉取到本地
# tag 一個(gè)鏡像
# 將新的docker images push 到本地倉(cāng)庫(kù)
4、加入nginx認(rèn)證
Docker 啟動(dòng)監(jiān)聽端口后,使用的是 http,可以遠(yuǎn)程來管理 Docker 主機(jī)。
這樣的場(chǎng)景存在弊端,API 層面是沒有提供用戶驗(yàn)證、Token 之類身份驗(yàn)證功能,任何人都可以通過地址加端口來控制 Docker 主機(jī),為了避免這樣的情況發(fā)生,Docker 官方也支持 https 方式,不過需要我們自己來生成證書。
新版本的docker 也強(qiáng)制必須使用https否則會(huì)報(bào)錯(cuò)
# 安裝nginx過程略
創(chuàng)建一個(gè)登陸用戶(如果沒有htpasswd命令 請(qǐng)安裝httpd-tools這個(gè)包)
New password:
Re-type new password:
Adding password for user admin
# 生成根密鑰
openssl genrsa -out private/cakey.pem 2048
# 生成根證書
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Brijing
Locality Name (eg, city) []:Chaoyang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:registry.wpython.com
Email Address []:
# 為nginx服務(wù)器生成ssl密鑰
openssl genrsa -out nginx.key 2048
# 為nginx生成的證書簽署請(qǐng)求
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Chaoyang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:registry.wpython.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
# 私有CA根據(jù)請(qǐng)求來簽發(fā)證書
# 如果報(bào)如下錯(cuò)誤:
Using configuration from /usr/local/ssl/openssl.cnf
/etc/pki/CA/index.txt: No such file or directory
unable to open '/etc/pki/CA/index.txt'
140137408210600:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/index.txt','r')
140137408210600:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
# 執(zhí)行以下命令
mkdir newcerts
touch index.txt
touch serial
echo 01 > serial
cd -
openssl ca -in nginx.csr -out nginx.crt
Using configuration from /usr/local/ssl/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: May 12 04:15:08 2015 GMT
Not After : May 11 04:15:08 2016 GMT
Subject:
countryName = CN
stateOrProvinceName = Beijing
organizationName = Internet Widgits Pty Ltd
commonName = registry.wpython.com
emailAddress = 739827282@qq.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
B5:20:C7:47:26:D9:26:54:12:F7:36:7E:4E:3A:F0:D9:0E:2C:F7:BD
X509v3 Authority Key Identifier:
keyid:93:F7:86:72:1B:2B:24:CD:AF:24:EF:53:F4:E1:FA:EC:E7:70:1A:90
Certificate is to be certified until May 11 04:15:08 2016 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
# 發(fā)現(xiàn)根證書
# cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt
# 創(chuàng)建nginx配置文件
upstream docker-registry {
server localhost:5000;
}
server {
listen 8080;
server_name registry.wpython.com;
# enabled ssl
ssl on;
ssl_certificate /alidata/server/nginx/ssl/nginx.crt;
ssl_certificate_key /alidata/server/nginx/ssl/nginx.key;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 0;
chunked_transfer_encoding on;
location / {
auth_basic "Restricted";
auth_basic_user_file docker-registry.htpasswd;
proxy_pass http://docker-registry;
}
location /_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
location /v1/_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
}
# 完成測(cè)試
Username: admin
Password:
Email: 739827282@qq.com
Login Succeeded
相關(guān)文章
輕松玩轉(zhuǎn)虛擬機(jī)套娃! 在Hyper-V中開啟嵌套虛擬化的技巧
有辦法在虛擬機(jī)中創(chuàng)建虛擬機(jī)嗎?答案是肯定的,在虛擬機(jī)中運(yùn)行虛擬機(jī)是可能的,我們將其稱為嵌套虛擬化,下面我們就來看看詳細(xì)操作方法2025-02-19龍蜥操作系統(tǒng)Anolis OS-23.x安裝配置圖解教程(保姆級(jí))
本文主要介紹了安裝和配置AnolisOS 23.2系統(tǒng),包括分區(qū)、軟件選擇、設(shè)置root密碼、網(wǎng)絡(luò)配置、主機(jī)名設(shè)置和禁用SELinux的步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-20VMware虛擬機(jī)怎么復(fù)制/克隆/導(dǎo)出VMDK文件?
在處理文件拷貝復(fù)制到VMware虛擬機(jī)中的任務(wù)時(shí),有多種方法可以實(shí)現(xiàn)文件的高效傳輸,使用這些方法,可以在不同的操作系統(tǒng)和環(huán)境下,實(shí)現(xiàn)文件的快速、安全遷移,詳細(xì)請(qǐng)看下文2024-09-24統(tǒng)信 UOS V20 桌面專業(yè)版更新發(fā)布:附更新內(nèi)容匯總
統(tǒng)信 UOS V20 桌面專業(yè)版(1070u1)正式發(fā)布,支持微信掃碼登錄、應(yīng)用窗口縮略圖,海量功能修復(fù),詳細(xì)請(qǐng)看下文介紹2024-08-08怎么看自己IP地址? 不同的操作系統(tǒng)中查看路由器的IP地址的方法
在互聯(lián)網(wǎng)上進(jìn)行網(wǎng)絡(luò)連接,每個(gè)設(shè)備都有一個(gè)唯一的標(biāo)識(shí),即IP地址,本文介紹了如何在不同平臺(tái)上查找路由器的IP地址,包括Windows、Mac、iPhone、iPad、Android、Chrome OS和2024-07-16mware虛擬機(jī)運(yùn)行速度卡慢原因分析及解決辦法
很多人在使用虛擬機(jī)系統(tǒng)的時(shí)候,經(jīng)常對(duì)虛擬機(jī)的運(yùn)行速度不甚滿意,甚至經(jīng)常很惱火,虛擬機(jī)速度慢有很多原因,每個(gè)人需要根據(jù)自己的情況具體分析,本文根據(jù)筆者的使用經(jīng)驗(yàn)將2024-02-21Vmware虛擬機(jī)如何與主機(jī)之間直接復(fù)制粘貼文件?
使用虛擬機(jī)的時(shí)候,遇到了錯(cuò)誤,想要把錯(cuò)誤的代碼或是運(yùn)行情況復(fù)制粘貼到Windows的網(wǎng)上論壇區(qū)求助大神,該怎么操作呢?詳細(xì)請(qǐng)看下文介紹2024-02-21統(tǒng)信UOS V20桌面專業(yè)版(1060)11月更新發(fā)布(附更新內(nèi)容匯總)
國(guó)產(chǎn)桌面操作系統(tǒng)統(tǒng)信 UOS V20 專業(yè)版(1060)11月更新發(fā)布,這是統(tǒng)信 UOS V20 專業(yè)版(1060)2023 年度最后一次更新,下面我們就來看看詳細(xì)的更新內(nèi)容2023-12-01統(tǒng)信 UOS 將推 Rust 版 Bash 命令行工具 utshell(附下載地址)
統(tǒng)信 UOS 服務(wù)器版將于不久后推出 Rust 版 Bash,名為 utshell,旨在突破傳統(tǒng) Shell 所面臨的安全限制,詳細(xì)請(qǐng)看下文介紹2023-09-20UOS開機(jī)進(jìn)入busybox界面怎么辦 uos無法進(jìn)入桌面的解決辦法
UOS開機(jī)進(jìn)入busybox界面怎么辦?UOS系統(tǒng)開機(jī)黑屏進(jìn)入busybox界面了,該怎么辦呢?下面我們就來看看uos無法進(jìn)入桌面的解決辦法2023-09-06