tutum/builder是一个用于从代码仓库构建、测试和推送Docker镜像的Docker镜像。它被Tutum平台用于自动化构建和测试流程。实现细节可参考博客文章。
在需要构建和推送的文件夹中运行以下Docker命令:
bashdocker run --rm -it --privileged -v $HOME/.docker:/.docker:ro -v $(pwd):/app tutum/builder $IMAGE_NAME
参数说明:
$IMAGE_NAME(可选):要构建和推送的镜像名称,可包含标签,如tutum/hello-world:latest。若未指定,仅构建和测试,不推送。也可通过环境变量-e IMAGE_NAME=$IMAGE_NAME传入~/.docker/config.json文件(通过docker login <registry>预先配置凭据),也可使用下文所述的$USERNAME、$PASSWORD和$EMAIL环境变量运行以下Docker命令:
bashdocker run --rm -it --privileged -v $HOME/.docker:/.docker:ro -e GIT_REPO=$GIT_REPO -e USERNAME=$USERNAME -e PASSWORD=$PASSWORD -e EMAIL=$EMAIL -e DOCKERFILE_PATH=$DOCKERFILE_PATH tutum/builder $IMAGE_NAME
参数说明:
$GIT_REPO:要克隆和构建的Git仓库地址,如https://github.com/tutumcloud/quickstart-python.git$GIT_TAG(可选,默认master):克隆后检出的标签/分支/提交,如master$DOCKERFILE_PATH(可选,默认/):仓库根目录下Dockerfile的相对路径,如/$IMAGE_NAME:要创建的镜像名称(含可选标签),如tutum/quickstart-python:latest$USERNAME:用于登录镜像仓库的用户名$PASSWORD:用于登录镜像仓库的密码$EMAIL(可选):用于登录镜像仓库的***若使用SSH密钥克隆仓库,可将私钥挂载到容器内/root/.ssh/id_rsa,命令中添加-v ~/.ssh/id_rsa:/root/.ssh/id_rsa;或使用环境变量:
$GIT_ID_RSA(可选):用于克隆Git仓库的私钥,如-e GIT_ID_RSA="$(awk 1 ORS='\\n' ~/.ssh/id_rsa)"运行以下Docker命令:
bashdocker run --rm -it --privileged -v $HOME/.docker:/.docker:ro -e TGZ_URL=$TGZ_URL -e DOCKERFILE_PATH=$DOCKERFILE_PATH -e USERNAME=$USERNAME -e PASSWORD=$PASSWORD -e EMAIL=$EMAIL tutum/builder $IMAGE_NAME
参数说明:
$TGZ_URL:压缩tarball(.tgz)的下载URL,如https://github.com/tutumcloud/docker-hello-world/archive/v1.0.tar.gz$DOCKERFILE_PATH(可选,默认/):tarball根目录下Dockerfile的相对路径,如/docker-hello-world-1.0$IMAGE_NAME:要创建的镜像名称(含可选标签),如tutum/hello-world:latest$USERNAME:用于登录镜像仓库的用户名$PASSWORD:用于登录镜像仓库的密码$EMAIL(可选):用于登录镜像仓库的***若需在构建前测试应用,在仓库根目录创建docker-compose.test.yml文件,包含名为sut的服务(用于测试)。可通过$TEST_FILENAME指定其他文件名。若该容器成功退出(exit code 0),构建继续;否则构建失败,镜像不被构建或推送。
Django应用示例(依赖Redis缓存):
yamlsut: build: . links: - redis command: python manage.py test redis: image: tutum/redis environment: - REDIS_PASS=password
为加速测试,可将sut服务中的build: .替换为image: this(引用测试前刚构建的镜像),避免重复构建。
支持在构建各阶段执行自定义脚本,按以下顺序触发:
hooks/post_checkout(挂载/app时不执行)hooks/pre_buildhooks/build(覆盖默认构建步骤)hooks/post_buildhooks/pre_testhooks/test(覆盖默认测试步骤)hooks/post_testhooks/pre_pushhooks/push(覆盖默认推送步骤)hooks/post_push在仓库中创建hooks文件夹,添加上述名称的脚本文件即可自动执行。
执行docker-compose.test.yml和钩子脚本时可用以下环境变量:
$GIT_BRANCH:当前测试的分支名称$GIT_TAG:当前测试的分支/标签/提交$GIT_SHA1:当前测试标签的提交哈希$IMAGE_NAME:正在构建的Docker仓库名称(启动容器时定义)$GIT_CLONE_OPTS:传递给git clone的选项,默认--recursive如需缓存构建和测试所用镜像,先运行:
bashdocker run --name builder_cache --entrypoint /bin/true tutum/builder
后续构建时添加--volumes-from builder_cache以复用已下载的镜像层。
若测试依赖私有镜像,可通过以下方式提供凭证:
.docker文件夹:-v $HOME/.docker:/.docker:ro-e DOCKER_CONFIG="$(cat $HOME/.docker/config.json)"如需使用主机Docker守护进程而非容器内的Docker-in-Docker,添加挂载:-v /var/run/docker.sock:/var/run/docker.sock:rw
若git clone --recursive因子模块凭据问题失败,可通过-e GIT_CLONE_OPTS=""禁用默认递归策略,然后在hooks/post_checkout或hooks/pre_build中手动执行git submodule init & git submodule update。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务