用户:目前没有实施在Linux / amd64与golang使用docker从头开始
我已经使用这个教程编译我的应用程序运行在从头开始的容器上运行。
我的代码使用os/user
user.Current()
。 当我使用博客文章中的技术时,运行容器时出现以下错误:
user: Current not implemented on linux/amd64
详细说明:
这是用来编译的命令:
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
这是用于创build图像( scratch
)的Dockerfile:
FROM scratch ADD ca-certificates.crt /etc/ssl/certs/ ADD main / ENTRYPOINT ["/main"]
这是用来运行容器的命令:
sudo docker run -it -v /var/run/docker.sock:/var/run/docker.sock --rm 813
有没有人遇到过这个? 任何解决scheme
Linux上的os/user
信息包的用户信息查询是使用getpwuid_r
系统调用实现的,因此在编译CGO_ENABLED=0
时CGO_ENABLED=0
。
在Go中实现/etc/passwd
parsing器听起来很简单, getpwuid
函数可以从不同的来源检索用户信息。 例如,在某些系统上,它可能使用LDAP目录。 所以获得平价的唯一方法是委托给C库。