docker中實(shí)現(xiàn) push到私有倉(cāng)庫(kù)
參考官方文檔:https://docs.docker.com/registry/spec/api/
1.安裝docker-registry
略
2.配置nginx訪問(wèn)(不設(shè)置https加密)
upstream docker_registry_pool{
server registry:5000; #nginx與registry都用docker,所以直接使用別名和docker內(nèi)網(wǎng)端口
}
server
{
listen 80;
server_name registry.xxx.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://docker_registry_pool;
proxy_read_timeout 900;
}
}
3.測(cè)試本地push
--注意,打tag時(shí),直接用完整訪問(wèn)路徑作為前綴
如:
docker tag myservice:v1.1 localhost:5000/tang/myservice:v1.1 #把myservice:v1.1 打上帶絕對(duì)路徑的v1.1tag
push時(shí):
docker push localhost:5000/tang/myservice:v1.1
查看是否存在:curl后查看json字符串是是否包括myservice鏡像
curl http://registry.xxx.com/v2/_catalog
查看存在的tag:curl后查看json字符串是是否包括myservice鏡像
curl http://registry.xxx.com/v2/tang/myservice/tags/list
4.測(cè)試遠(yuǎn)程push(現(xiàn)啟動(dòng)時(shí)默認(rèn)是https,所以會(huì)報(bào)錯(cuò))
打上tag,目前是http請(qǐng)求
docker tag myservice:v1.1 registry.xxx.comtang/myservice:v1.1 #把myservice:v1.1 打上帶絕對(duì)路徑的v1.1tag
push時(shí):
docker push registry.xxx.comtang/myservice:v1.1
http: server gave HTTP response to HTTPS client #報(bào)錯(cuò)
5.修改配置(切記,一定是客戶端,而且非服務(wù)端)
支持http:兩種方式,選擇其中一種即可,不可重復(fù),假如是80端口,也要寫上,因?yàn)閐ocker-client默認(rèn)使用443端口。
切記,一定是客戶端,而且非服務(wù)端,如在B機(jī)器推送或者在公司電腦推送到遠(yuǎn)程A服務(wù)器上
5.1 方式一:修改docker客戶端的配置
vim /usr/lib/systemd/system/docker.service
配置項(xiàng)后增加配置:
--insecure-registry=registry.xxx.com:80,后面是你的域名或者ip,如果有端口也要帶上,坑爹一定要指定加上80端口
ExecStart=/usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
--init-path=/usr/libexec/docker/docker-init-current \
--seccomp-profile=/etc/docker/seccomp.json \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
$REGISTRIES \
--insecure-registry=registry.xxx.com:80 \
--insecure-registry=你的ip:5000
5.2 方式二:添加docker客戶端配置
修改 /etc/docker/daemon.json 文件(如果沒有就創(chuàng)建新的),并寫入如下內(nèi)容:
{
"insecure-registries":[
"xxx.xxx.xxx.xxx:5000",
"registry.xxx.com:80"
]
}5.3 如果是window客戶端
修改:C:\Users\左右手公用\AppData\Roaming\Docker\daemon.json
或者修改Docker Desktop配置

5.4 修改后重啟docker服務(wù)
#linux下 systemctl daemon-reload systemctl restart docker
6.再次測(cè)試遠(yuǎn)程push
重新打上tag,目前nginx配置的是80端口的http請(qǐng)求,一定要坑爹的顯示加上80端口80!80!80!80!
因?yàn)閐ocker-client默認(rèn)使用443端口
docker tag myservice:v1.1 registry.xxx.comtang:80/myservice:v1.1 #把myservice:v1.1 打上帶絕對(duì)路徑的v1.1tag
push時(shí):
docker tag myservice:v1.1 registry.xxx.comtang:80/myservice:v1.1 #把myservice:v1.1 打上帶絕對(duì)路徑的v1.1tag
成功?。。?!
7.既然https是默認(rèn)的,那就配置https吧
想一想,為什么我們打tag時(shí)不需要寫上http或者h(yuǎn)ttps的標(biāo)記,因?yàn)閐ocker-client就是默認(rèn)使用443端口,傲嬌吧!
為了避免上面這些坑,其實(shí)建議nginx配置https的,那么docker-client發(fā)送https請(qǐng)求,nginx能接收處理
push帶用戶名密碼的倉(cāng)庫(kù)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker部署單機(jī)版doris的實(shí)現(xiàn)步驟(無(wú)坑)
本文主要介紹了docker部署單機(jī)版doris的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-08-08
給docker創(chuàng)建的elasticsearch容器添加密碼簡(jiǎn)單步驟
在使用Elasticsearch(ES)Docker容器時(shí),有時(shí)需要設(shè)置密碼來(lái)保護(hù)數(shù)據(jù)的安全性,這篇文章主要給大家介紹了關(guān)于給docker創(chuàng)建的elasticsearch容器添加密碼的簡(jiǎn)單步驟,需要的朋友可以參考下2024-02-02
Docker鏡像構(gòu)建之docker commit的使用
本文主要介紹了Docker鏡像構(gòu)建之docker commit的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
使用elasticsearch定時(shí)刪除索引數(shù)據(jù)
這篇文章主要介紹了使用elasticsearch定時(shí)刪除索引數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
備份Docker容器中的PostgreSQL數(shù)據(jù)的圖文實(shí)操教程
現(xiàn)在docker容器很方便,可以一鍵部署項(xiàng)目,但是方便部署的同時(shí),也給運(yùn)維帶來(lái)了麻煩,docker中的pgsql數(shù)據(jù),如何進(jìn)行備份呢,本文小編給大家就介紹了備份Docker容器中的PostgreSQL數(shù)據(jù)的圖文實(shí)操教程,需要的朋友可以參考下2024-09-09
docker部署MinIO對(duì)象存儲(chǔ)的實(shí)踐指南
MinIO是一款高性能的開源對(duì)象存儲(chǔ)服務(wù)器,兼容Amazon S3 API,適用于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),本文主要為大家介紹了docker部署MinIO對(duì)象存儲(chǔ)的詳細(xì)步驟,需要的可以了解下2025-06-06

