
Dockerfile链接dev.go2go分支的Go2 Docker镜像这是来自https://github.com/golang/go/tree/dev.go2go%E7%9A%84Golang Docker镜像的nightly构建。希望此构建能帮助社区更多地使用Go2的新特性。
该分支包含用于Go泛型实验的类型检查器和转换工具,实现了泛型设计草案。
可按常规方式构建此分支,之后可使用新的go2go工具。将泛型代码写入扩展名为.go2的文件(而非.go),通过go tool go2go run x.go2运行。cmd/go2go/testdata/go2path/src中提供了一些示例包,运行go doc cmd/go2go可查看工具完整文档。
go2go工具通过环境变量GO2PATH查找.go2文件。设置GO2PATH=$GOROOT/src/cmd/go2go/testdata/go2path可获取一些用于实验的有用包。
若在更新后的类型检查器或转换工具中发现bug,应提交至标准Go问题跟踪器,并在问题标题以cmd/go2go开头。注意,问题跟踪器仅用于报告工具bug,不用于语言变更讨论。
与典型开发分支不同,此代码不计划合并至master分支。我们将针对bug修复和泛型设计草案变更进行更新。若泛型语言提案被接受,将在标准编译器中实现,而非通过转换工具。go/*包(如go/ast、go/parser等)的必要变更可能复用此原型代码,但需遵循常规代码审查流程。
注意: /go目录为全局可写,以支持容器运行用户的灵活性(例如,使用--user 1000:1000启动容器时,go get github.com/example/...可成功执行)。虽然777权限在常规主机环境中不安全,但容器内通常无其他进程或用户,因此在Docker使用中相当于700,同时支持--user灵活性。
使用此镜像最直接的方式是将Go容器同时作为构建和运行环境。在Dockerfile中按以下方式编写,可编译并运行项目:
dockerfileFROM levonet/golang:go2go WORKDIR /go/src/app COPY . . RUN go get -d -v ./... RUN go install -v ./... CMD ["app"]
然后构建并运行Docker镜像:
console$ docker build -t my-golang-app . $ docker run -it --rm --name my-running-app my-golang-app
有时可能不适合在容器内运行应用。如需在Docker实例内编译而非运行应用,可执行如下命令:
console$ docker run --rm -v "$PWD":/go/src/myapp -w /go/src/myapp levonet/golang:go2go go build -v
或编译.go2源文件:
console$ docker run --rm -v "$PWD":/go/src/myapp -w /go/src/myapp levonet/golang:go2go go tool go2go build
levonet/golang镜像有多种版本,适用于不同场景。
levonet/golang:<version>这是默认镜像。若不确定需求,建议使用此版本。设计用于临时容器(挂载源代码并启动容器运行应用),也可作为构建其他镜像的基础。
部分标签可能包含如buster等名称,这些是Debian的版本代号,指示镜像基于哪个发行版。若镜像需安装镜像自带之外的额外包,建议显式指定版本以减少Debian新版本发布时的兼容性问题。
levonet/golang:<version>-alpine此镜像基于流行的Alpine Linux项目,来自https://hub.docker.com/_/alpine%E3%80%82Alpine Linux比大多数发行版基础镜像小得多(约5MB),因此生成的镜像通常更精简。
此变体高度实验性,且未得到Go项目官方支持(详见https://github.com/golang/go/issues/***%EF%BC%89%E3%80%82
主要注意事项是其使用musl libc而非glibc及相关库,可能导致意外行为。详见此Hacker News评论线程了解可能出现的问题及使用Alpine镜像的优缺点对比。
为最小化镜像大小,Alpine基础镜像不包含额外相关工具(如git、gcc或bash)。以此镜像为基础时,需在自己的Dockerfile中添加所需工具(若不熟悉,可参考https://hub.docker.com/_/alpine/%E4%B8%AD%E7%9A%84%E5%8C%85%E5%AE%89%E8%A3%85%E7%A4%BA%E4%BE%8B%EF%BC%89%E3%80%82%E5%8F%A6%E8%A7%81https://github.com/docker-library/golang/issues/250#issuecomment-451201761%E4%BA%86%E8%A7%A3%E6%9B%B4%E5%A4%9A%E8%A7%A3%E9%87%8A%E3%80%82
查看此镜像包含软件的许可证信息或Golang Dockerfile的https://github.com/levonet/docker-golang/blob/master/LICENSE%E3%80%82
与所有Docker镜像一样,其中可能包含其他软件,可能受其他许可证约束(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖)。
可在https://github.com/docker-library/repo-info/tree/master/repos/golang%E4%B8%AD%E6%89%BE%E5%88%B0%E4%B8%80%E4%BA%9B%E8%83%BD%E8%87%AA%E5%8A%A8%E6%A3%80%E6%B5%8B%E5%88%B0%E7%9A%84%E9%A2%9D%E5%A4%96%E8%AE%B8%E5%8F%AF%E8%AF%81%E4%BF%A1%E6%81%AF%E3%80%82
对于任何预构建镜像的使用,镜像用户有责任确保对镜像中所有软件的使用符合相关许可证要求。
以下是 levonet/golang 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务