docker轉(zhuǎn)移鏡像的實(shí)現(xiàn)步驟
1、場(chǎng)景
- 有網(wǎng)絡(luò)環(huán)境向無(wú)網(wǎng)絡(luò)環(huán)境轉(zhuǎn)移鏡像。
- 無(wú)法拉取的鏡像(外網(wǎng)無(wú)法訪問(wèn))下載鏡像轉(zhuǎn)移到服務(wù)器上。
2、docker轉(zhuǎn)移
2.1 鏡像服務(wù)器
保存鏡像
列出項(xiàng)目使用的所有鏡像
docker images
保存所有鏡像為 tar 文件
保存docker鏡像
docker save -o my_project_images.tar my_project_images:1.0.0
2.2 新服務(wù)器
在新服務(wù)器上加載鏡像
docker load -i my_project_images.tar
啟動(dòng)鏡像
docker run \ --name my_project_images \ -d \ --restart always \ my_project_images:1.0.0
3、docker compose轉(zhuǎn)移項(xiàng)目
3.1 鏡像服務(wù)器
保存鏡像
列出項(xiàng)目使用的所有鏡像
在docker-compose.yml的目錄下執(zhí)行
docker-compose images
保存所有鏡像為 tar 文件
合并導(dǎo)出:保存docker-compose鏡像,將所有鏡像合并到一個(gè) .tar 文件
docker save -o my_project_images.tar $(docker-compose images | awk '{if(NR>2) print $2":"$3}')分文件導(dǎo)出:每個(gè)鏡像單獨(dú)保存(適合選擇性遷移)
docker-compose images -q | xargs -n 1 -I {} docker save {} -o ./images/{}.tar
命令示例
docker-compose images | awk '{if(NR>2) print $2":"$3}'
[root@ openmetadata-docker]# docker-compose images | awk '{if(NR>2) print $2":"$3}'
WARN[0000] /root/openmetadata-docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker.elastic.co/elasticsearch/elasticsearch:8.11.4
docker.getcollate.io/openmetadata/ingestion:1.6.8
docker.getcollate.io/openmetadata/db:1.6.8
docker.getcollate.io/openmetadata/server:1.6.8docker-compose images -q | xargs -n 1
[root@ images]# docker-compose images -q | xargs -n 1 WARN[0000] /root/openmetadata-docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 4128d7bbe2a1bcbad0a05a2a6af72b98b6f2ae6752fa9446b5c8eef9a1af4769 8759d2faeffbc4797832aa90ef5b88c1f40af72e6f8b0b0de42703f32fa9d67b b7c0bf7f2e52cb9b9a4b1dd6cd82c7e6b6f01895832391974d2c70144425ac60 15eb21ac0f7eedc6c62fbf1f444d6ed0cd47d99faa7fa7404af0916c67163518
3.2 新服務(wù)器
在新服務(wù)器上加載鏡像
docker load -i my_project_images.tar
啟動(dòng)鏡像
確定已復(fù)制 docker-compose.yml 文件到新服務(wù)器
docker-compose up -d
3.3 注意事項(xiàng)
鏡像與配置一致性:確保目標(biāo)服務(wù)器的
docker-compose.yml中image:名稱和標(biāo)簽與導(dǎo)出的鏡像完全匹配,否則 Docker 會(huì)嘗試從倉(cāng)庫(kù)拉取。依賴環(huán)境
- 目標(biāo)服務(wù)器需安裝 Docker 和 Docker Compose。
- 文件路徑和卷掛載(如
volumes:)需適配目標(biāo)服務(wù)器的目錄結(jié)構(gòu)。
4、私服方式
4.1 鏡像服務(wù)器
登錄倉(cāng)庫(kù)
docker login [倉(cāng)庫(kù)地址] # 不指定地址則默認(rèn)為Docker Hub # 示例(Docker Hub): docker login -u 你的用戶名 # 示例(私有倉(cāng)庫(kù)): docker login registry.example.com -u 用戶名 -p 密碼
查看現(xiàn)有鏡像
docker images docker-compose images # 如果是docker-compose項(xiàng)目
為鏡像打標(biāo)簽
格式:docker tag 本地鏡像[:標(biāo)簽] 倉(cāng)庫(kù)地址/用戶名/倉(cāng)庫(kù)名[:標(biāo)簽]
# 為單個(gè)鏡像打標(biāo)簽示例:
docker tag my-app:1.0 mydockerhub/my-app:1.0
# 為docker-compose項(xiàng)目所有鏡像打標(biāo)簽:
docker-compose build # 確保鏡像已構(gòu)建
docker-compose images | awk 'NR>2 {print $2":"$3}' | xargs -I {} docker tag {} mydockerhub/{}推送鏡像到倉(cāng)庫(kù)
# 推送單個(gè)鏡像:
docker push mydockerhub/my-app:1.0
# 推送docker-compose項(xiàng)目所有鏡像:
docker-compose push # 如果鏡像已正確配置在compose文件中
# 或者手動(dòng)推送:
docker images | grep "mydockerhub" | awk '{print $1":"$2}' | xargs -I {} docker push {}4.2 新服務(wù)器
登錄倉(cāng)庫(kù)
docker login [倉(cāng)庫(kù)地址]
拉取鏡像
# 單個(gè)鏡像: docker pull mydockerhub/my-app:1.0 # 使用docker-compose(需先復(fù)制compose文件): docker-compose pull # 啟動(dòng) docker-compose up -d
5、文件分割上傳
當(dāng)需要傳輸?shù)?tar 文件過(guò)大時(shí),可以將其分割成多個(gè)小文件分別傳輸,然后在目標(biāo)服務(wù)器上重新組裝。
5.1 在源服務(wù)器上分割大文件
使用 split 命令分割文件
linux直接使用如下命令,windows使用 Git Bash執(zhí)行如下命令
# 將大文件分割成每個(gè)1GB的小文件(可根據(jù)需要調(diào)整大小) split -b 1G my_project_images.tar my_project_images.tar.part_
驗(yàn)證分割結(jié)果
ls -lh my_project_images.tar.part_*
5.2 在目標(biāo)服務(wù)器上重新組裝文件
使用 cat 命令合并文件
cat my_project_images.tar.part_* > my_project_images.tar
驗(yàn)證合并后的文件完整性
# 檢查文件大小 ls -lh my_project_images.tar
到此這篇關(guān)于docker轉(zhuǎn)移鏡像的文章就介紹到這了,更多相關(guān)docker 轉(zhuǎn)移鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Docker的微服務(wù)自動(dòng)化部署系統(tǒng)全解析
本文介紹了基于Docker的微服務(wù)自動(dòng)化部署系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),該系統(tǒng)通過(guò)模塊化設(shè)計(jì),包括服務(wù)發(fā)現(xiàn)、容器編排、監(jiān)控告警等功能,實(shí)現(xiàn)了微服務(wù)的自動(dòng)化部署、運(yùn)維和監(jiān)控,提高了部署效率和穩(wěn)定性,感興趣的朋友跟隨小編一起看看吧2026-01-01
記 -bash: docker-compose: command not&nbs
這篇文章主要介紹了記 -bash: docker-compose: command not found 的問(wèn)題解決方法,本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
在Docker中動(dòng)態(tài)配置前端請(qǐng)求地址的三種方式
在使用 Docker Compose 部署前后端分離項(xiàng)目時(shí),前端容器需要根據(jù)不同的環(huán)境(開(kāi)發(fā)、測(cè)試、生產(chǎn))動(dòng)態(tài)請(qǐng)求后端服務(wù)的地址,本文給大家介紹了在Docker中動(dòng)態(tài)配置前端請(qǐng)求地址的三種實(shí)踐方式:構(gòu)建時(shí)注入 vs 運(yùn)行時(shí)動(dòng)態(tài)配置 vs 掛載外部配置文件,需要的朋友可以參考下2025-05-05
如何解決docker鏡像在不同cpu架構(gòu)上運(yùn)行容器報(bào)錯(cuò)問(wèn)題
文章主要介紹了如何查看本地Docker鏡像的CPU架構(gòu)類型,并提供了解決x86鏡像無(wú)法在ARM CPU上運(yùn)行的問(wèn)題的方法,通過(guò)在Dockerfile中使用`--platform`參數(shù)指定CPU架構(gòu),可以在構(gòu)建鏡像時(shí)選擇正確的版本,從而解決架構(gòu)不匹配的問(wèn)題2024-12-12
docker如何快速搭建幾個(gè)常用的第三方服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于利用docker如何快速搭建幾個(gè)常用的第三方服務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

