![](/img/trans.png)
[英]Docker difference docker run[…] docker container run […]
[英]Problem with run docker container contains golang project
嘗試運行包含golang應用程序的docker映像時遇到一些問題。 這是錯誤:請enter code here
standard_init_linux.go:211:exec用戶進程導致“ exec格式錯誤”
這是我的環境:
GOARCH="amd64"
GOBIN="/home/nikolaj//home/nikolaj/go/bin"
GOCACHE="/home/nikolaj/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/nikolaj/go"
GOPROXY=""
GORACE=""
GOROOT="/snap/go/4765"
GOTMPDIR=""
GOTOOLDIR="/snap/go/4765/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build908015468=/tmp/go-build -gno-record-gcc-switches"
go environment : GOARCH="amd64"
GOBIN="/home/nikolaj//home/nikolaj/go/bin"
GOCACHE="/home/nikolaj/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/nikolaj/go"
GOPROXY=""
GORACE=""
GOROOT="/snap/go/4765"
GOTMPDIR=""
GOTOOLDIR="/snap/go/4765/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build838573681=/tmp/go-build -gno-record-gcc-switches"
dockerfile:
FROM golang:1.12.0
WORKDIR /app
ENV SRC_DIR=/go/src/vk_acceptor/
ADD . $SRC_DIR
RUN cd $SRC_DIR; env; goenv; export GO111MODULE=on; go get -u; go build -o application; cp application /app/
RUN chmod +x application
ENTRYPOINT ["./application"]
格式化RUN command
它看起來像這樣: RUN cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/
docker build .
輸出docker build .
命令:
Sending build context to Docker daemon 9.067MB
Step 1/7 : FROM golang:1.12.0
---> cee68f119e19
Step 2/7 : WORKDIR /app
---> Using cache
---> 5bffbbf8f161
Step 3/7 : ENV SRC_DIR=/go/src/vk_acceptor/
---> Using cache
---> bf145f38f8db
Step 4/7 : ADD . $SRC_DIR
---> 766466f20647
Step 5/7 : RUN cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/
---> Running in 7aeb8905c137
HOSTNAME=7aeb8905c137
SRC_DIR=/go/src/vk_acceptor/
HOME=/root
OLDPWD=/app
PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GOPATH=/go
PWD=/go/src/vk_acceptor
GOLANG_VERSION=1.12
/bin/sh: 1: goenv: not found
The command '/bin/sh -c cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/' returned a non-zero code: 127
如果查看輸出錯誤,則可以清楚地看到錯誤消息:
/bin/sh: 1: goenv: not found
我想您想在命令中鍵入go env
?
standard_init_linux.go:211: exec user process caused "exec format error"
各種原因standard_init_linux.go:211: exec user process caused "exec format error"
錯誤發生,這不僅是由於許多論壇所說的,不僅是當您嘗試使用不同於主機的體系結構啟動映像時。 在我的情況下,由於將捆綁的程序放置在Docker容器中的錯誤目錄中而發生此錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.