安装 Docker
|
|
清除 none 的 image
|
|
安装 docker-compose
|
|
docker-compose build 不留下 none 的 image
|
|
使用alpine镜像出现not found
的原因及解决方法
使用alpine作为基础镜像的时候, 偶尔会出现not found
的错误, 但文件却是存在的.
使用其他发行版的镜像的时候, 不会出现这个错误. 就查找资料寻找了下原因.
原因
Go编译默认其实并不是静态编译, 会依赖系统中的一些动态链接库, 比如glibc
.
大部分发行版默认都会带glibc
, 但alpine并没有自带, 而是自带了musl libc
.
所以执行依赖了glibc
的二进制文件的时候, 就会出现not found
的错误. (这个错误的描述是真的很有迷惑性😂)
解决方法
- 编译不依赖
glibc
的二进制文件, 比如Go编译的时候指定CGO_ENABLED=0
. - 编译一个依赖
musl libc
的二进制文件.