Docker搭建鏡像加速站的四種方法實(shí)現(xiàn)
前言
之前因?yàn)閷W(xué)習(xí)原因,購買了一臺(tái)海外服務(wù)器,使用過程中,我發(fā)現(xiàn)它拉取 Docker 鏡像十分方便,于是乎就長時(shí)間作為一個(gè) Docker 中間站來使用,通過 Docker pull + Docker save + scp + Docker load使用著,但是這樣太麻煩了,每次獲得一個(gè)鏡像,我都要四個(gè)步驟,而且服務(wù)器帶寬很小,拉取挺慢、傳下來更慢,給我用的糟心的不行,因此,經(jīng)過兩天的仔細(xì)處理,部署了一個(gè) Docker 鏡像加速站,試了下速度還可以,下面是過程中我用的幾種方法,每種方法的優(yōu)劣我都進(jìn)行一些介紹。
方法一: Nexus
優(yōu)點(diǎn):快速部署
缺點(diǎn):需要至少1G的運(yùn)存,否則無法啟動(dòng)或啟動(dòng)后會(huì)拋異常
支持:Docker、Maven、npm、PyPI
如果你的服務(wù)器有足夠運(yùn)存的話,那這個(gè)方法還是很推薦的,使用下方命令一鍵啟動(dòng)即可:
- 啟動(dòng)
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
- 隨后在編輯
/etc/docker/daemon.json文件,在JSON中加入下方內(nèi)容即可:
{
"registry-mirrors": ["http://xxxx.com:8082"]
}
應(yīng)該也可以直接使用IP
- 加載配置并重啟 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
方法二: Harbor
優(yōu)點(diǎn):支持私有鏡像倉庫 、 也能加速
缺點(diǎn):需要至少2G的運(yùn)存、需要自己編寫配置文件
支持:Docker、Helm Chart、OCI 鏡像
- 部署
# 使用 Docker Compose 快速部署 wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-online-installer-v2.8.0.tgz tar -xzvf harbor-online-installer-v2.8.0.tgz cd harbor cp harbor.yml.tmpl harbor.yml vim harbor.yml # 修改 hostname、端口等配置 ./install.sh
- 使用
編輯/etc/docker/daemon.json文件,加入以下內(nèi)容:
{ "registry-mirrors": ["https://your-harbor-server.com"] }
- 加載配置并重啟 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
方法三: Dragonfly
這個(gè)方法不介紹了,因?yàn)槲乙矝]有嘗試,也需要較大運(yùn)存才可以,支持 Docker、Containerd、Kubernetes
方法四: 小運(yùn)存方案[我用的方案 | 推薦]
優(yōu)點(diǎn):運(yùn)存需求極小
缺點(diǎn):只能加速、緩存,不能當(dāng)做鏡像站,且操作起來略麻煩
支持:Docker
由于我的服務(wù)器只有1G運(yùn)存且還要跑一些別的東西,實(shí)在無力招架上面三種方案,因此我絞盡GPT的腦汁,想出來了這種方案。
我這種方案用到了SSL證書,我不確定不用SSL證書行不行(因?yàn)槲以瓉砭陀校?,建議可以通過Cloudflare申請個(gè)免費(fèi)的SSL證書,網(wǎng)上教程很多,這里不多贅述(我就是這么做的),下面直接上正文:
- 創(chuàng)建一個(gè)文件夾,然后在里面創(chuàng)建
nginx.conf文件,內(nèi)容如下:
server {
listen 443 ssl;
server_name docker_proxy;
ssl_certificate /etc/nginx/certs/fullchain.cer;
ssl_certificate_key /etc/nginx/certs/xxx.com.key;
location / {
proxy_pass http://registry:5000;
}
}
注意這里面的路徑不需要修改,只需要修改文件名即可,因?yàn)檫@不是服務(wù)器路徑,是容器內(nèi)部的路徑。
- 在同一個(gè)目錄下,創(chuàng)建
docker-compose.yml編排文件,內(nèi)容如下:
version: '3'
services:
registry:
image: registry
container_name: registry-mirror
restart: always
environment:
- REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
volumes:
- ./registry:/var/lib/registry
expose:
- "5000"
nginx:
image: nginx
container_name: registry-nginx
restart: always
ports:
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./certs:/etc/nginx/certs:ro
depends_on:
- registry
- 然后給你的SSL文件夾拷貝到該路徑下,并取名為
certs。
到這一步,你的文件夾下應(yīng)該有三個(gè)東西:
- nginx.conf
- docker-compose.yml
- certs 文件夾(里面是SSL公私鑰)
- 然后執(zhí)行下面命令,啟動(dòng)編排文件:
docker compose up -d
此時(shí)會(huì)啟動(dòng)兩個(gè)容器,然后你在本地的 Docker 配置文件中,加上你的加速地址即可,注意是https開頭的哦。
- 使用
編輯/etc/docker/daemon.json文件,加入以下內(nèi)容:
{
"registry-mirrors": ["https://xxxx.com"]
}
加載配置文件并重啟docker
sudo systemctl daemon-reload sudo systemctl restart docker
其它
在一些Docker Desktop客戶端版本中(比如Mac),是沒有/etc/docker/daemon.json文件的,你需要右上角設(shè)置里面手動(dòng)添加配置,如下:

紅框內(nèi)便是你要編輯的內(nèi)容,因涉及隱私,我打了 馬 賽 克
最后,來一張封面:

到此這篇關(guān)于Docker搭建鏡像加速站的四種方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker 鏡像加速站內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Docker的持久化存儲(chǔ)和數(shù)據(jù)共享
這篇文章主要介紹了詳解Docker的持久化存儲(chǔ)和數(shù)據(jù)共享,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
Docker創(chuàng)建tomcat容器實(shí)例后無法訪問(HTTP狀態(tài)404)
本文主要介紹了Docker創(chuàng)建tomcat容器實(shí)例后無法訪問,HTTP狀態(tài)顯示404,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
使用minikube安裝k8s單節(jié)點(diǎn)集群方式
本文主要介紹了minikube的使用方法,包括安裝、啟動(dòng)、鏡像管理等步驟,minikube是一個(gè)專注于讓Kubernetes更易于學(xué)習(xí)和開發(fā)的本地Kubernetes環(huán)境,支持在macOS、Linux和Windows上快速設(shè)置本地Kubernetes集群2024-10-10
用docker搭建selenium grid分布式環(huán)境實(shí)踐之路
這篇文章主要介紹了用docker搭建selenium grid分布式環(huán)境實(shí)踐之路,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
portainer連接遠(yuǎn)程docker的實(shí)現(xiàn)示例
本文主要介紹了portainer連接遠(yuǎn)程docker的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Docker搭建Minio容器的流程步驟(完整詳細(xì)版)
Minio 是一個(gè)基于Apache License v2.0開源協(xié)議的對象存儲(chǔ)服務(wù),雖然輕量,卻擁有著不錯(cuò)的性能,它兼容亞馬遜S3云存儲(chǔ)服務(wù)接口,非常適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù),本文將給大家介紹Docker搭建Minio容器的流程步驟,需要的朋友可以參考下2024-08-08
詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器)
容器中管理數(shù)據(jù)主要有兩種方式,這篇文章主要介紹了詳解Docker數(shù)據(jù)管理(數(shù)據(jù)卷&數(shù)據(jù)卷容器) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10

