
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Go(又称Golang)是由Google开发的编程语言。它是一种静态类型语言,语法大致源自C,但增加了垃圾回收、类型安全、一些动态类型能力、额外的内置类型(如变长数组和键值映射)以及大型标准库。
***.org/wiki/Go_(programming_language)
使用此镜像最直接的方式是将Go容器同时用作构建和运行环境。在您的Dockerfile中,编写如下内容可以编译并运行项目:
dockerfileFROM docker.xuanyuan.run/clefos/golang
此镜像包含多个ONBUILD触发器,可覆盖大多数应用场景。构建过程会COPY . /go/src/app、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
注意: golang:onbuild中的默认命令实际上是go-wrapper run,其中包含set -x,因此应用启动时会将二进制名称打印到stderr。如果不希望此行为,可以添加CMD ["app"](如果使用https://golang.org/s/go14customimport,则为`CMD ["myapp"]`),直接运行构建的二进制文件以消除此输出。
有时可能不适合在容器内运行应用。要在Docker实例内编译而非运行应用,可以编写如下命令:
console$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang go build -v
这会将当前目录作为卷添加到容器,将工作目录设置为该卷,并运行go build命令,该命令会编译工作目录中的项目并将可执行文件输出为myapp。或者,如果您有Makefile,可以在容器内运行make命令:
console$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang bash -c make
如果需要为linux/amd64以外的平台(如windows/386)编译应用,可以使用提供的cross标签轻松实现:
console$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.3-cross go build -v
或者,您可以一次为多个平台构建:
console$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.3-cross bash $ for GOOS in darwin linux; do > for GOARCH in 386 amd64; do > go build -v -o myapp-$GOOS-$GOARCH > done > done
golang镜像有多种版本,每种版本设计用于特定场景。
golang:<version>这是默认镜像。如果不确定需求,可能需要使用此版本。它设计为既可作为临时容器(挂载源代码并启动容器以运行应用),也可作为构建其他镜像的基础。此标签基于https://registry.hub.docker.com/_/buildpack-deps/。`buildpack-deps`专为拥有多个镜像的普通Docker用户设计,包含大量极其常见的Debian软件包,减少派生镜像需要安装的软件包数量,从而减小系统上所有镜像的总体大小。
golang:alpine此镜像基于流行的http://alpinelinux.org,可在https://hub.docker.com/_/alpine中获取。Alpine Linux比大多数发行版基础镜像小得多(约5MB),因此通常会生成更精简的镜像。
当希望最终镜像大小尽可能小时,强烈推荐此变体。需要注意的是,它使用http://www.musl-libc.org而非http://www.etalabs.net/compare_libcs.html,因此某些软件可能因libc需求深度而遇到问题。然而,大多数软件不会有此问题,因此此变体通常是非常安全的选择。有关可能出现的问题以及使用基于Alpine的镜像的优缺点比较,请参见此Hacker News评论线程。
为最小化镜像大小,基于Alpine的镜像通常不包含额外的相关工具(如git或bash)。以此镜像为基础,可在自己的Dockerfile中添加所需内容(如果不熟悉如何安装软件包,请参见https://hub.docker.com/_/alpine/中的示例)。
golang:onbuild此镜像使构建派生镜像更加容易。对于大多数用例,在项目目录的基础上创建包含FROM golang:onbuild行的Dockerfile,足以创建项目的独立镜像。
虽然onbuild变体对于“快速启动”(短时间内实现Docker化)非常有用,但由于无法控制ONBUILD触发器的触发时间,不建议在项目中长期使用(另请参见https://github.com/docker/docker/issues/5714、https://github.com/docker/docker/issues/8240、https://github.com/docker/docker/issues/***)。
一旦熟悉项目在Docker中的运行方式,可能需要调整Dockerfile以继承非onbuild变体,并将onbuild变体Dockerfile中的命令(将ONBUILD行移至末尾并删除ONBUILD关键字)复制到自己的文件中,以便更好地控制这些命令,并让自己和查看Dockerfile的其他人更清楚其作用。这也便于随着时间的推移添加额外需求(例如在执行之前的ONBUILD步骤之前安装更多软件包)。
查看此镜像中包含的软件的http://golang.org/LICENSE。
此镜像官方支持Docker版本1.10.1。
对旧版本(低至1.6)的支持基于尽力而为原则。
有关如何升级Docker守护程序的详细信息,请参见https://docs.docker.com/installation/。
此镜像的文档存储在https://github.com/docker-library/docs的https://github.com/docker-library/docs/tree/master/golang中。在尝试提交拉取请求之前,请务必熟悉该仓库的https://github.com/docker-library/docs/blob/master/README.md。
如果对此镜像有任何问题或疑问,请通过https://github.com/docker-library/golang/issues与我们联系。
您也可以通过Freenode上的#docker-library IRC频道联系许多官方镜像维护者。
我们邀请您贡献新功能、修复或更新,无论大小;我们始终很高兴收到拉取请求,并会尽最大努力尽快处理。
在开始编码之前,建议通过https://github.com/docker-library/golang/issues讨论您的计划,尤其是对于更宏大的贡献。这使其他贡献者有机会为您指明正确方向,提供设计反馈,并帮助您了解是否有其他人正在从事相同的工作。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 clefos/golang 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: