自建镜像启动报:"no such file or directory"
2018-06-20 16:25
351 查看
工作中编写prometheus的vsphere vcenter的exporter之后,进行容器化部署的实践,就参照prometheus的Dockerfile写了一个
但启动的时候报如下错误:
经过不停的测试,发现是打出来的二进制文件在busybox中无法运行,但prometheus能运行,就通过阅读promu的源码并通过增加-v参数打印出了prometheus编译的参数
经过尝试发现增加-tags netgo之后镜像启动正常,在网上找了一下对go build -tags的描述比较少,依然不清楚为什么。后面发现网上有对比-tags netgo 和CGO_ENABLED,通过设置CGO_ENABLED=0环境变量,发现镜像启动也是没问题的。
个人猜测,golang默认使用cgo编译,但busybox中没有c相关的环境导致二进制文件无法正常运行。因此,将cgo编译关闭之后就没问题了。
FROM quay.io/prometheus/busybox:latest LABEL maintainer "QHCloud Observer Exporter" USER root EXPOSE 3871 COPY observer_vcenter_exporter /bin/observer_vcenter_exporter #WORKDIR / ENTRYPOINT [ "/bin/observer_vcenter_exporter" ] CMD [ "--config-file=/etc/observer/vcenter.yml"]
但启动的时候报如下错误:
standard_init_linux.go:190: exec user process caused "no such file or directory"
经过不停的测试,发现是打出来的二进制文件在busybox中无法运行,但prometheus能运行,就通过阅读promu的源码并通过增加-v参数打印出了prometheus编译的参数
go build -o /home/chensl004/Workspace/go/src/github.com/prometheus/prometheus/prometheus -ldflags -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Version=2.3.0.1 -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Revision=3cf878f9079773ced3461ae3c4b2516e47c07264 -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.Branch=2.3.0 -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.BuildUser=chensl004@chensl004 -X github.com/prometheus/prometheus/vendor/github.com/prometheus/common/version.BuildDate=20180620-06:55:23 -extldflags '-static' -a -tags netgo github.com/prometheus/prometheus/cmd/prometheus
经过尝试发现增加-tags netgo之后镜像启动正常,在网上找了一下对go build -tags的描述比较少,依然不清楚为什么。后面发现网上有对比-tags netgo 和CGO_ENABLED,通过设置CGO_ENABLED=0环境变量,发现镜像启动也是没问题的。
个人猜测,golang默认使用cgo编译,但busybox中没有c相关的环境导致二进制文件无法正常运行。因此,将cgo编译关闭之后就没问题了。
相关文章推荐
- 自定义容器启动脚本报错:exec user process caused "no such file or directory"
- nginx启动报错(open() "/var/run/nginx/nginx.pid" failed (2:No such file or directory))
- 自定义容器启动脚本报错:exec user process caused "no such file or directory"
- PG启动报错(could not load server certificate file "server.crt": No such file or directory)
- 切图异常: Cannot run program "gm": error=2, No such file or directory 处理
- 解决安装nginx的nginx: [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory)问题
- cocos2d-x 移植到android中编译的一些问题:fatal error: Box2D/Box2D.h: No such file or directory"
- Erlang 编译时出现"no such file or directory" 与 当前工作目录问题
- sphinx启动searchd进程出现search error failed to open No such file or directory
- linux php添加mysql扩展时报错: No such file or directory #include "ext/mysqlnd.h"
- 启动redis出现Creating Server TCP listening socket *:6379: bind: No such file or directory
- pip install pycurl "Error: Could not run curl-config: [Errno 2] No such file or directory"
- nginx: [error] open() "/usr/local/nginx/run/nginx.pid" failed (2: No such file or directory)
- VS2008中"fatal error C1083:无法打开包括文件:“Stdafx.h”: No such file or directory”
- 关于xpbs远程连接报错 Unable to access "/var/run/munge/munge.socket.2": No such file or directory 解决办法
- ubuntu shortcut "no such file or directory" 快捷方式不能用
- android studio “aapt” IOException error=2, No such file or directory"
- //tools/emulator" java.io.IOException: error=二, No such file or directory"
- nginx 服务器配置:nginx.pid" failed (2: No such file or directory
- Neo4j启动失败/usr/share/neo4j/bin/neo4j: line 411: /var/run/neo4j/neo4j.pid: No such file or directory