如何從Docker鏡像中導出文件,再次解構Image

我最新最全的文章都在 南瓜慢說 www.pkslow.com ,歡迎你們來喝茶!

簡介

有時咱們須要從別人的Docker鏡像中導出一些有用的文件,以打包進咱們本身的鏡像,以知足一些安全性、可用性等要求。本文主要介紹兩種方法。docker

第一種方法:從運行的容器中複製

先把鏡像跑起來,而後從運行起來的容器中複製文件出來,複製命令以下:shell

# 從容器複製文件或目錄到宿主機器
docker cp 6619ff360cce:/opt/h2-data/pkslow ./
docker cp 6619ff360cce:/opt/h2-data/pkslow/pkslow.txt ./

更多命令可參考:Docker和Kubernetes經常使用命令(持續整理)json

第二種方法:解壓鏡像tar文件

首先,第一種方法並非萬能的,由於有些鏡像過於簡單,少了許多基礎命令,以致於沒法複製文件,也沒法進入shell環境。其次,要運行起來再操做,也有點佔用資源,比較麻煩。安全

ghcr.io/kedacore/keda:2.2.0爲例演示以下從該鏡像中提取文件:bash

(1)將鏡像保存爲tar文件微信

$ docker save -o keda.tar ghcr.io/kedacore/keda:2.2.0

(2)解壓tar文件spa

$ tar xvf keda.tar 
x 42b88f0429143256463a478dda36b5e6d63f6dc43e033c3415414149c8c3257b.json
x 82a2e23fb9f1f5ac86b6c60196bff58e163601e5f37f1bc2bb1bd1781e8f6906/
x 82a2e23fb9f1f5ac86b6c60196bff58e163601e5f37f1bc2bb1bd1781e8f6906/VERSION
x 82a2e23fb9f1f5ac86b6c60196bff58e163601e5f37f1bc2bb1bd1781e8f6906/json
x 82a2e23fb9f1f5ac86b6c60196bff58e163601e5f37f1bc2bb1bd1781e8f6906/layer.tar
x ec12616cdd736751f41ba8d32cb9e9553ec33fc9d0bd1df92d4d8995b3dbc8ea/
x ec12616cdd736751f41ba8d32cb9e9553ec33fc9d0bd1df92d4d8995b3dbc8ea/VERSION
x ec12616cdd736751f41ba8d32cb9e9553ec33fc9d0bd1df92d4d8995b3dbc8ea/json
x ec12616cdd736751f41ba8d32cb9e9553ec33fc9d0bd1df92d4d8995b3dbc8ea/layer.tar
x manifest.json
x repositories

能夠看到每一個分層的信息,咱們查看manifest.json能夠看到具體哪一個layer是最新的。3d

(3)找其中一個layer再解壓code

$ tar xvf ec12616cdd736751f41ba8d32cb9e9553ec33fc9d0bd1df92d4d8995b3dbc8ea/layer.tar
x keda

這樣,咱們就獲取到了keda這個可執行文件。每層的打包內容不同,須要看所需的文件在哪一個Layer。資源


歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...

多讀書,多分享;多寫做,多整理。

相關文章
相關標籤/搜索