Golang Docker容器无法在Windows Home上启动

时间:2020-10-27 12:59:07

标签: windows docker go

我使用的是在Docker中启用WSL的Windows Home OS。

在打印以下 build 消息后

        byte[] bom = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF };
        var csvStr = Encoding.UTF8.GetString(bom) + csv.ToString();

当我尝试运行时,将打印以下图像消息

docker build .
SECURITY WARNING: You are building a Docker image from Windows against a non-    Windows Docker host. All files and directories added to build context will have '-rwxr-    xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

Dockerfile内容在下面

docker run 49fee6f5a6bb -d
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-d\": executable file not found in $PATH": unknown.

1 个答案:

答案 0 :(得分:2)

问题在于命令的顺序(最有可能):

docker run -d yourcontainer应该可以工作

一些不相关的建议:这是对docker文件的重写(未经测试)。 如您所见,它更短,并且使用构建和运行阶段。

构建阶段使用其中带有golang的较大容器,您的代码等。运行容器(FROM alpine:latest)仅具有生成的程序,使其变得既好又小(快速加载到您的容器环境中),并且更安全(例如,仅使用代码即可使用硬性linux)。

FROM golang:alpine AS build

WORKDIR /build
ADD . /build

# Depending on the golang version GO111MODULE can be removed as env variable
RUN GOOS=linux GOARCH=amd64 GO111MODULE=on go build -o main 

FROM alpine:latest

# Export necessary port
EXPOSE 3000
# Add  application
WORKDIR /dist
COPY --from=build /build/main /dist/main