docker轉(zhuǎn)移鏡像的實(shí)現(xiàn)步驟
1、場景
- 有網(wǎng)絡(luò)環(huán)境向無網(wǎng)絡(luò)環(huán)境轉(zhuǎn)移鏡像。
- 無法拉取的鏡像(外網(wǎng)無法訪問)下載鏡像轉(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.8
docker-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ì)嘗試從倉庫拉取。依賴環(huán)境
- 目標(biāo)服務(wù)器需安裝 Docker 和 Docker Compose。
- 文件路徑和卷掛載(如
volumes:
)需適配目標(biāo)服務(wù)器的目錄結(jié)構(gòu)。
4、私服方式
4.1 鏡像服務(wù)器
登錄倉庫
docker login [倉庫地址] # 不指定地址則默認(rèn)為Docker Hub # 示例(Docker Hub): docker login -u 你的用戶名 # 示例(私有倉庫): docker login registry.example.com -u 用戶名 -p 密碼
查看現(xiàn)有鏡像
docker images docker-compose images # 如果是docker-compose項(xiàng)目
為鏡像打標(biāo)簽
格式:docker tag 本地鏡像[:標(biāo)簽] 倉庫地址/用戶名/倉庫名[:標(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/{}
推送鏡像到倉庫
# 推送單個(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ù)器
登錄倉庫
docker login [倉庫地址]
拉取鏡像
# 單個(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 文件過大時(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器上用DockerFile部署多個(gè)tomcat服務(wù)的步驟
這篇文章主要介紹了Docker容器上用DockerFile部署多個(gè)tomcat服務(wù)的步驟,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Docker掛載/etc/timezone報(bào)錯(cuò)問題
這篇文章主要介紹了Docker掛載/etc/timezone報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明
這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Docker 手動(dòng)配置容器網(wǎng)絡(luò)實(shí)例詳解
這篇文章主要介紹了Docker 手動(dòng)配置容器網(wǎng)絡(luò)實(shí)例詳解的相關(guān)資料,這里有具體實(shí)現(xiàn),需要的朋友可以參考下2016-11-11