栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

standard

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

standard

场景

在将golang应用打包成docker的镜像的过程中执行下面命令

docker run -it -P --name docker_client -m 1024m --net host docker_client:1.0

执行以后服务器就报了这个错误

standard_init_linux.go:190: exec user process caused "exec format error"

按照网上的方法一直没用,自己在虚拟机上也能正常运行,后面认真看自己的dockerfile文件

FROM golang:alpine

ENV GO111MODULE=on 
    GOPROXY=https://goproxy.cn,direct 
    CGO_ENABLED=0 
    GOOS=linux 
    GOARCH=amd64

# 在容器根目录 创建一个 apps 目录
WORKDIR /build

# 拷贝当前目录下 go_docker_demo1 可以执行文件
COPY . .

# 将我们的代码编译成二进制可执行文件app
RUN go build -o app .

# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist

# 将二进制文件从 /build 目录复制到这里
RUN cp /build/app .

# 暴露端口
EXPOSE 8080

# 运行golang程序的命令
CMD ["/dist/app"]

发现GOARCH参数为amd64,后面查看服务器的相关版本

 docker version
 #查看docker的版本

输出信息中发现了问题,其中有一行参数为arm64

 OS/Arch:           linux/arm64

于是就将dockerfile文件修改了一下

FROM golang:alpine

ENV GO111MODULE=on 
    GOPROXY=https://goproxy.cn,direct 
    CGO_ENABLED=0 
    GOOS=linux 
    GOARCH=arm64

# 在容器根目录 创建一个 apps 目录
WORKDIR /build

# 拷贝当前目录下 go_docker_demo1 可以执行文件
COPY . .

# 将我们的代码编译成二进制可执行文件app
RUN go build -o app .

# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist

# 将二进制文件从 /build 目录复制到这里
RUN cp /build/app .

# 暴露端口
EXPOSE 8080

# 运行golang程序的命令
CMD ["/dist/app"]

再将dockerfile重新构建镜像以后就能正常运行了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/865524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号