遷移docker鏡像到新服務(wù)器的具體操作流程
遷移步驟詳解
要將 /home/docker/song-schedule 完整遷移到新服務(wù)器,需確保 代碼、數(shù)據(jù)、鏡像、配置 的一致性。
以下是具體操作流程:
1. 在舊服務(wù)器上準(zhǔn)備遷移文件
1.1 打包項(xiàng)目目錄
# 進(jìn)入項(xiàng)目目錄 cd /home/docker # 壓縮整個(gè)目錄(包含子目錄和隱藏文件) tar czvf song-schedule.tar.gz song-schedule/
1.2 導(dǎo)出 Docker 鏡像
由于服務(wù)依賴本地構(gòu)建的鏡像(如 super-nginx:001、super-mall-admin-server:v001),需將鏡像導(dǎo)出為文件:
# 列出所有相關(guān)鏡像 docker images | grep -E "super-nginx|super-mall-admin-server|super-notes-server" # 導(dǎo)出鏡像(示例) docker save -o super-nginx-001.tar super-nginx:001 docker save -o super-mall-admin-server-v001.tar super-mall-admin-server:v001 docker save -o super-notes-server-v002.tar super-notes-server:v002
1.3 復(fù)制文件到新服務(wù)器
將以下文件通過(guò) scp 或 rsync 傳輸?shù)叫路?wù)器的相同路徑(如 /home/docker):
• song-schedule.tar.gz
• 導(dǎo)出的鏡像文件(super-nginx-001.tar 等)
• 證書(shū)目錄 /home/cert(如果新服務(wù)器沒(méi)有證書(shū)需同步)
• 掛載的日志和文件目錄(如 /mnt/logs)
# 示例:使用 scp 傳輸 scp song-schedule.tar.gz root@新服務(wù)器IP:/home/docker/ scp /home/cert/* root@新服務(wù)器IP:/home/cert/ scp /mnt/logs/song-schedule/* root@新服務(wù)器IP:/mnt/logs/song-schedule/
2. 在新服務(wù)器上恢復(fù)環(huán)境
2.1 解壓項(xiàng)目目錄
# 進(jìn)入目標(biāo)目錄 cd /home/docker # 解壓文件 tar xzvf song-schedule.tar.gz
2.2 加載 Docker 鏡像
# 加載鏡像(需在解壓后的目錄外操作) docker load -i super-nginx-001.tar docker load -i super-mall-admin-server-v001.tar docker load -i super-notes-server-v002.tar # 驗(yàn)證鏡像是否加載成功 docker images | grep -E "super-nginx|super-mall-admin-server|super-notes-server"
2.3 創(chuàng)建必要目錄
檢查所有掛載的宿主機(jī)目錄是否存在:
# 創(chuàng)建日志目錄
mkdir -p /mnt/logs/song-schedule/{file,super-mall-admin,super-notes}
# 創(chuàng)建文件存儲(chǔ)目錄
mkdir -p /home/docker/song-schedule/file/defaultBucketName
# 設(shè)置目錄權(quán)限(避免容器無(wú)權(quán)限寫(xiě)入)
chmod -R 755 /mnt/logs /home/docker/song-schedule
3. 修改配置適配新環(huán)境
檢查 docker-compose.yml 中以下內(nèi)容是否需調(diào)整:
3.1 路徑一致性
• 確保所有掛載的 宿主機(jī)路徑 在新服務(wù)器存在(如 /home/cert、/mnt/logs)。
• 如果新服務(wù)器路徑不同,需修改 volumes 部分(例如將 /home/cert 改為 /etc/nginx/cert)。
3.2 端口沖突
檢查新服務(wù)器的端口是否被占用(如 8084-8087、8090):
netstat -tuln | grep -E "8084|8085|8086|8087|8090"
若端口沖突,修改 ports 配置(如 "8088:443")。
3.3 證書(shū)配置
確保 /home/cert 目錄包含有效的 SSL 證書(shū)文件(如 cert.pem 和 key.pem),且文件名與 Nginx 配置中的路徑一致。
4. 啟動(dòng)服務(wù)
# 進(jìn)入項(xiàng)目目錄 cd /home/docker/song-schedule # 啟動(dòng)所有服務(wù)(使用 -d 后臺(tái)運(yùn)行) docker-compose up -d # 查看服務(wù)狀態(tài) docker-compose ps # 檢查容器日志(示例) docker-compose logs super-web-nginx
5. 驗(yàn)證遷移結(jié)果
- 訪問(wèn)服務(wù):
• 通過(guò)瀏覽器或curl測(cè)試 HTTPS 端口(如https://新服務(wù)器IP:8086)。 - 檢查數(shù)據(jù)持久化:
• 確認(rèn)/mnt/logs和/home/docker/song-schedule/file中有新日志和文件生成。 - 監(jiān)控容器狀態(tài):
docker ps -a | grep "song-schedule"
常見(jiàn)問(wèn)題處理
• 問(wèn)題1:容器啟動(dòng)失敗,提示 “No such file or directory”
• 原因:掛載的宿主機(jī)目錄不存在或權(quán)限不足。
• 解決:檢查目錄路徑和權(quán)限,確保與 docker-compose.yml 一致。
• 問(wèn)題2:Nginx 報(bào)錯(cuò) “SSL certificate not found”
• 原因:證書(shū)文件未正確掛載到容器。
• 解決:確認(rèn) /home/cert 中有證書(shū)文件,且容器內(nèi)路徑 /etc/nginx/cert 映射正確。
• 問(wèn)題3:端口沖突
• 解決:修改 docker-compose.yml 中的宿主機(jī)端口(如 "8091:443"),然后重啟服務(wù):
```bash docker-compose down && docker-compose up -d
--- **遷移后優(yōu)化建議** 1. 使用 Docker Registry:將鏡像推送到私有倉(cāng)庫(kù)(如 Harbor),避免手動(dòng)導(dǎo)出導(dǎo)入。 2. 環(huán)境變量化配置:將路徑、端口等提取到 `.env` 文件,便于跨環(huán)境管理: ```properties # .env 文件示例 CERT_PATH=/home/cert LOG_PATH=/mnt/logs
在 docker-compose.yml 中引用:
volumes:
- ${CERT_PATH}:/etc/nginx/cert
- 日志集中管理:使用 ELK 或 Grafana Loki 收集容器日志,替代直接掛載日志目錄。
通過(guò)以上步驟,您可以完整遷移服務(wù)并確保數(shù)據(jù)一致性。如果遇到問(wèn)題,可通過(guò) docker-compose logs <服務(wù)名> 查看詳細(xì)錯(cuò)誤日志。
總結(jié)
到此這篇關(guān)于遷移docker鏡像到新服務(wù)器的文章就介紹到這了,更多相關(guān)遷移docker鏡像到新服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
快速掌握使用Docker搭建開(kāi)發(fā)環(huán)境
利用Docker Compose技術(shù)輔助開(kāi)發(fā)人員對(duì)于開(kāi)發(fā)環(huán)境的搭建,最終實(shí)現(xiàn)開(kāi)發(fā)人員只要裝有Docker就可以完成整個(gè)開(kāi)發(fā)環(huán)境的搭建。今天小編給大家分享使用Docker搭建開(kāi)發(fā)環(huán)境的詳細(xì)流程,感興趣的朋友一起看看吧2021-05-05
docker運(yùn)行nginx鏡像的實(shí)現(xiàn)步驟
這篇文章主要介紹了docker運(yùn)行nginx鏡像的實(shí)現(xiàn),并將配置文件和目錄掛載到宿主機(jī)上,以實(shí)現(xiàn)方便統(tǒng)一的管理配置信息,感興趣的可以了解一下2023-10-10
Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解
bridge模式是Docker默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會(huì)為每一個(gè)容器分配Network Namespace、設(shè)置IP等,并將一個(gè)主機(jī)上的Docker容器連接到一個(gè)虛擬網(wǎng)橋上,下面這篇文章主要給大家介紹了關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-01-01
docker拉取redis最新鏡像并運(yùn)行的方法詳解
這篇文章主要介紹了docker拉取redis最新鏡像并運(yùn)行的方法,文章通過(guò)圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05
Docker數(shù)據(jù)卷掛載命令volume(-v)與mount的使用總結(jié)
本文主要介紹了Docker數(shù)據(jù)卷掛載命令volume(-v)與mount的使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡
本文主要介紹了keepalived + nginx + httpd 實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
項(xiàng)目訪問(wèn)使用docker bridge網(wǎng)絡(luò)模式(端口映射)配置過(guò)程
這篇文章主要介紹了項(xiàng)目訪問(wèn)使用docker bridge網(wǎng)絡(luò)模式(端口映射)配置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03

