您好,登錄后才能下訂單哦!
小編給大家分享一下如何最小化docker鏡像,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
很容器想到from scratch, 就是沒任何基礎鏡像
FROM scratch COPY p / ENTRYPOINT ["/p"]
<!--more-->
有幾點要注意:
ENTRYPOINT 或者CMD 必須要用[]這種模式,如果直接/p會用sh去啟動,而scratch沒有shell導致失敗
二進制程序必須靜態編譯,也就是不能依賴libc什么的動態庫
動態編譯的bin程序:
[root@dev-86-205 ci-sftp]# ldd p linux-vdso.so.1 => (0x00007ffd6ef7b000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa28f94e000) libc.so.6 => /lib64/libc.so.6 (0x00007fa28f58d000) /lib64/ld-linux-x86-64.so.2 (0x00007fa28fb72000)
這種情況下出來的bin程序可能會出現問題:
standard_init_linux.go:175: exec user process caused "no such file or directory”
靜態編譯的bin程序,這是我們scratch需要的:
[root@dev-86-205 ci-sftp]# ldd p 不是動態可執行文件
golang中靜態編譯命令:
go build --ldflags '-linkmode external -extldflags "-static”'
如果不靜態編譯那可能得拷貝一堆動態庫到鏡像中,很多lowB就是那么做的
以上是“如何最小化docker鏡像”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。