我最新最全的文章都在 南瓜慢說 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
首先,第一種方法並非萬能的,由於有些鏡像過於簡單,少了許多基礎命令,以致於沒法複製文件,也沒法進入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。資源
歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...
多讀書,多分享;多寫做,多整理。