從零製作Docker映象的指令碼
github地址:
開發一些方便使用的Docker工具
指令碼目的:
Docker使用過程中,有時候可以將許多重複工作用shell指令碼來簡化,如pipework.該庫的作用也是如此。
工具介紹:
目錄:pack_images:打包相關工具
- 使用場景:
如果我們想從空的映象開始製作一個只包含需要工具的映象,這時候可能需要分析需要哪些工具,並將這些工具的依懶一起打包進去。這時候手動分析依懶就很麻煩。這個指令碼的作用就是自動將工具的依懶也分析並打包進去。
如我們要打包一個/bin/bash,/bin/bash會依懶動態加器及一些相關庫,這時我們只要在pack_files中寫入/bin/bash,然後執行./tar_all_files.sh pack_files,指令碼就會自動分析依懶,然後將需要建立的符號連結和動態庫等打包成一個pack.tar包。然後我們就可以利用這個tar包建立映象了。
- 指令碼說明:
log.sh:日誌處理相關函式
tar_all_files.sh:將pack_files中的所有檔案及依懶項遞迴打包成pack.tar
pack_files:要打包的工具,tar_all_files.sh會自動遞迴分析依懶項並打包.
使用步驟:
1.建立一個空映象
tar cv --files-from /dev/null | docker import - empty
2.加入我們要打包進去的工具
# cat pack_files
/bin/bash
/bin/ls
/usr/bin/vim
/usr/bin/gdb
3.執行指令碼打pack.tar
./tar_all_files.sh pack_files
4.編寫Dockfile
# cat Dockerfile
FROM empty
ADD pack.tar /
5.生成映象
docker build -t empty_test .
6.完成
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
empty_test latest 0a336da3a6e2 19 minutes ago 21.06 MB