大家好,我是羊刀仙~
文接上回,介紹了通過Cloudflare和域名自行部署免費的docker加速服務(wù),不過有的小伙伴可能因為地域或各種問題出現(xiàn)加速失敗的情況。
本期會介紹如何通過海外VSP服務(wù)器和域名搭建Docker加速服務(wù),雖然白嫖Cloudflare很爽,但自建的更為穩(wěn)定!
VPS服務(wù)器必須是海外,但配置1核1GB就完全足夠,還需要域名一枚。關(guān)于服務(wù)器,各位可以白嫖(如甲骨文),也可以自行購買或小團體分攤費用,單純?yōu)榱薉ocker鏡像加速成本很低。
相對而言,我更樂意推薦本文的方式,畢竟VPS搭配NAS用起來真的很舒服:
同樣的,本文方法適用幾乎所有VPS/NAS/服務(wù)器。
準備工作
域名解析、VPS初始化,部署Nginx Proxy Manager(反代工具)。已經(jīng)看過咱們之前文章的可以直接劃過本節(jié)。
??域名解析
這里建議準備一個專用的主域解析到服務(wù)器上。這里以阿里云為例。
打開阿里云主頁,找到域名解析,點擊解析設(shè)置
。
添加兩條解析記錄,如下圖所示,記錄類型為A,主機記錄為主域名和泛域名,記錄值為VPS服務(wù)器的公網(wǎng)IP。
其它不用管,保存后解析工作完成。
??VPS基礎(chǔ)配置
VPS購買平臺不同,一些設(shè)置項或功能名稱可能有略微不同,請自行辨別。阿里云比較特殊,就也以它為例吧~
購買完等待VPS系統(tǒng)初始化后,首先要設(shè)置的就是安全組(防火墻),阿里云分了出/入方向(很多服務(wù)商并不做區(qū)分),我們一般情況僅需添加下圖框內(nèi)的兩類,如果你擔心安全問題,可以根據(jù)需求逐個開放TCP協(xié)議端口(我嫌麻煩直接1~66535全部開啟)。
接下來,要初步啟用服務(wù)器有幾件必須做的事情。本篇以我最愛用的Debian 10為例,其它系統(tǒng)例如Ubuntu也大差不差。
通過SSH連接進入控制臺,類似于NAS,利用工具在控制臺輸入以下命令:
ssh root@106.45.22.34 # 不同系統(tǒng)賬戶名不同,IP為外網(wǎng)或公網(wǎng)IP,這個要注意 sudo -i # 一般不需要,基本默認會給root apt update # 更新軟件包列表,讓系統(tǒng)知道有哪些軟件包可以更新 apt upgrade --only-upgrade # 安裝所有可用的軟件包更新 apt install wget curl sudo vim git -y # 安裝常用軟件包,Debian一般來說需要這步
接下來安裝Docker,接著輸入命令:
wget -qO- get.docker.com | bash # 非大陸服務(wù)器安裝docker docker -v # 確認是否安裝成功及查看版本 systemctl enable docker # 設(shè)置開機自動啟動 apt install docker-compose # 安裝docker-compose docker-compose --version #查看docker-compose版本
這些工作做完,就可以啟用了~
??部署Nginx Proxy Manager
接著SSH輸入以下命令
mkdir -p /root/data/docker_data/npm # 創(chuàng)建安裝目錄 cd /root/data/docker_data/npm # 進入該目錄下 vim docker-compose.yml # 創(chuàng)建并編輯docker-compose.yml文件
將下面代碼粘貼進去:
version: '3' services: nginx-proxy-manager: container_name: nginx-proxy-manager image: jc21/nginx-proxy-manager:latest ports: - '80:80' # 作為反代工具,不建議修改監(jiān)聽端口。國內(nèi)VPS/服務(wù)器 酌情修改,下同 - '81:81' # - '443:443' volumes: - "./data:/data" # 冒號左邊可改路徑,./表示當前路徑下 - "./letsencrypt:/etc/letsencrypt" # 同理 restart: unless-stopped
英文輸入狀態(tài)下,按i
即可進行修改。修改完畢后,按下esc
,再同時按下shift
+:
,英文狀態(tài)輸入wq
并回車,即可保存。
接著我們輸入以下命令開始部署:
docker-compose up -d
部署完畢后,web輸入VPS服務(wù)器公網(wǎng)IP:81
并回車即可訪問 Nginx Proxy Manager 的管理界面。
初始賬號密碼如下:
admin@example.com changeme
進去會先彈出界面,填寫常用郵箱并重設(shè)密碼。
先給npm自己做個反代,主界面如下圖操作
填寫相關(guān)信息
需要注意的是,在反代其他服務(wù)時,如果你的 Nginx Proxy Manager 部署于其它服務(wù)器,IP這里就要填寫 該服務(wù) 所在的服務(wù)器公網(wǎng)IP!
可以通過輸入ip addr show docker0
查看本地IP
接著換到SSL一欄,如下圖進行勾選,最后點擊Save進行保存:
等待自動配置,可能要稍微等會兒,配置填對問題都不大,結(jié)果如下。
之后再次返回,勾選強制SSL并保存,這才算最終完事兒
因為部署了 Nginx Proxy Manager,接下來也不用敲代碼了,直接通過它的可視化界面進行操作。
正式配置
??配置 Docker 鏡像加速代理
跟上文類似的,在主頁點擊Proxy Hosts
,再次點擊右上角的Add Proxy Host
。
輸入你的二級域名,選擇https
,IP與以往不同輸入registry-1.docker.io
,端口則輸入 43
。之后切換到 “SSL” 標簽頁
選擇Request a new SSL Certificate
,勾選Force SSL
和HTTP/2 Support
,點擊Save
保存配置。
在Advanced
的Custom Nginx Configuration
部分添加配置并保存
具體配置如下:
location /v2/ { proxy_pass https://registry-1.docker.io; proxy_set_header Host registry-1.docker.io; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_hide_header Docker-Distribution-Api-Version; add_header Docker-Distribution-Api-Version registry/2.0 always; proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; proxy_buffering off; proxy_intercept_errors on; recursive_error_pages on; error_page 301 302 307 = @handle_redirect; } location /token { proxy_pass https://auth.docker.io; proxy_set_header Host auth.docker.io; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location @handle_redirect { resolver 1.1.1.1; set $saved_redirect_location '$upstream_http_location'; proxy_pass $saved_redirect_location; }
返回SSH,以防萬一,重啟下Docker服務(wù):
systemctl restart docker
測試
打開Container Station,點擊左側(cè)存儲庫
-添加
添加存儲庫進行驗證,名稱隨意,URL格式必須按照下圖所示,結(jié)果是驗證成功,點擊應(yīng)用
。
接著點擊左側(cè)欄映像
-提取
,需要選擇剛添加的庫,還是以數(shù)據(jù)庫項目mysql
測試,可以順手把設(shè)置為默認勾選上。輸入library/mysql
并提取。
速度還可以,下載速度在4MB/s,主要我這臺服務(wù)器水管太小了。可以看到提取成功
這里要說明一下,例如 mysql ubuntu nginx 這類官方拉取命令為docker pull mysql
的,重定向問題我并沒有解決。按照本文方式拉取,必須加一個/library
,但例如linuxserver/emby
這類正常填寫就好,如下圖所示
目前不太清楚是什么問題導(dǎo)致,可能要原版Nginx,文件中的重定向配置才會生效?不過目前這樣也完全能用,等后面再折騰一下吧~有大拿了解的也可在評論區(qū)留言討論~
通過Docker Compose部署則僅需做出如下改動:
image: antonyleons/ward image: mysql # 改為 image: docker.xxx.xyz/antonyleons/ward image: docker.xxx.xyz/library/mysql
如下圖所示,其他全部保持原樣,不過一個應(yīng)用程序若包含多個容器,記得每個image
都要改掉
最后
抽空我還會繼續(xù)更新自建Docker鏡像加速方面內(nèi)容,盡量為大家多提供些可選方案。
如果大伙兒覺得本篇內(nèi)容還不錯,別忘了三連支持下,能點點關(guān)注就更好了!后續(xù)我還會持續(xù)分享各類教程以及有趣好玩的項目,感謝觀看,咱們下期見~
,