文档章节

自建镜像启动报:"no such file or directory"

一路向北的兔斯基
 一路向北的兔斯基
发布于 2018/06/20 16:25
字数 358
阅读 492
收藏 0

工作中编写prometheus的vsphere vcenter的exporter之后,进行容器化部署的实践,就参照prometheus的Dockerfile写了一个

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编译关闭之后就没问题了。

© 著作权归作者所有

共有 人打赏支持
一路向北的兔斯基
粉丝 9
博文 67
码字总数 27256
作品 0
成都
高级程序员
私信 提问
docker image 管理

通常我们在官方下载的镜像不能够切合的在我们生产环境中使用,比如缺包,和我们环境中所需要的环境软件版本不一致等,所以我们要自己制作镜像 制作镜像又两种方法: 启动docker容器后,把容器...

shy润物无声
2018/06/29
0
0
Redis数据迁移方案

场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: redis-dump -h host1 -p 6379 -d 1 --json > mydb.json 针对Red......

zsdnr
2017/07/21
0
0
Dockerfile安装的几个实例

Dockerfile安装的几个实例 2018年07月07日 10:26:09 阅读数:49更多 个人分类: Docker 例子来源: http://www.runoob.com/docker/docker-install-redis.html Docker 安装 MySQL 方法一、通过...

linjin200
2018/08/23
0
0
alpine docker exec: "/bin/bash": stat /bin/bash: no such file or directory 解决方案

alpine docker exec: "/bin/bash": stat /bin/bash: no such file or directory 解决方案 docker exec -it 029e6df30836 /bin/bash exec: "/bin/bash": stat /bin/bash: no such file or di......

feeltoday会火
2018/04/03
0
0
dockerfile ENTRYPOINT执行脚本文件报错:no such file or directory

基础镜像:eop-base tomcat镜像: init.sh docker build tomcat的dockerfile报错: 把一些初始的命令放在init.sh里,启动时执行,当时报错No such file or directory。但是换成第二个ENTRYPO...

v1-alpha
2017/07/31
514
1

没有更多内容

加载失败,请刷新页面

加载更多

Android Messenger进程间客户端向服务端传递数据

Messenger:客户端向服务端传递数据 1.Service: public class MessengerService extends Service { private Messenger messenger = new Messenger(new Handler() { public void handleMess......

Coding缘
2分钟前
0
0
Pod在多可用区worker节点上的高可用部署

一、 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可用...

zhaowei121
20分钟前
0
0
oracle XTTS介绍

一、什么是XTTS 首先什么是XTTS。XTTS其实是从TTS来的,TTS其实也是传输数据的一种手段,传输数据的时候可能用过EXP的方式,再往后可能用数据泵导入导出一些数据,或者去做备份然后再恢复。其...

突突突酱
21分钟前
0
0
[缺陷分析]半同步下多从库复制异常

引 言 本文是由爱可生研发团队出品的「图解MySQL」系列文章,不定期更新,但篇篇精品。 爱可生开源社区持续运营维护的小目标: 每周至少推送一篇高质量技术文章 每月研发团队发布开源组件新版...

爱可生
21分钟前
0
0
二维数组序号重置

public static function unique_arr($array2D,$stkeep=false,$ndformat=true){ // 判断是否保留一级数组键 (一级数组键可以为非数字) if($stkeep) $stArr = array_keys($array2D); // 判断是......

dragon_tech
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部