如何从GitHub代码库构建Docker镜像

50

在官方文档中我们可以看到:

# docker build github.com/creack/docker-firefox

对我来说一切都运行正常。docker-firefox是一个存储库,并在根目录中有一个Dockerfile
然后我想构建Redis镜像,确切地说是版本2.8.10:

# docker build github.com/docker-library/redis/tree/99c172e82ed81af441e13dd48dda2729e19493bc/2.8.10
2014/11/05 16:20:32 Error trying to use git: exit status 128 (Initialized empty Git repository in /tmp/docker-build-git067001920/.git/
error: The requested URL returned error: 403 while accessing https://github.com/docker-library/redis/tree/99c172e82ed81af441e13dd48dda2729e19493bc/2.8.10/info/refs

fatal: HTTP request failed
)

我遇到了上述错误。从 Github 存储库构建 Docker 镜像的正确格式是什么?


文档: https://docs.docker.com/engine/reference/commandline/build/#git-repositories - Dilhan Jayathilake
3个回答

55

docker build url#ref:dir

Git URL可以在片段部分中配置上下文,由冒号:分隔。第一部分表示Git将检出的引用,可以是分支、标签或提交SHA。第二部分表示存储库内将用作构建上下文的子目录。

例如,在容器分支中使用名为 docker 的目录,请运行此命令:

docker build https://github.com/docker/rootfs.git#container:docker

https://docs.docker.com/engine/reference/commandline/build/


3
对于那些可能会对 docker build url#ref:dir 感到困惑的人,这里的 ref 意味着分支。 - GalacticRaph

11
您指定的仓库URL不是一个有效的git仓库,尝试会出现错误。
合法的URL为github.com/docker-library/redis。您可以尝试以下操作:
docker build github.com/docker-library/redis
但这也无法正常工作。要从GitHub构建,docker需要在仓库根目录中提供Dockerfile。然而,这个仓库没有提供Dockerfile。因此,我建议您只需克隆该仓库,并使用本地的Dockerfile构建镜像。

3
实际上,“docker build https://raw.githubusercontent.com/docker-library/redis/master/2.8.10/Dockerfile”是可行的,但与[官方示例](http://docs.docker.com/v1.1/reference/commandline/cli/#build)不同。谢谢您的回答。 - seanlook

5

以下是一个示例,用于设置测试ORC文件格式的Centos 7容器。请确保转义# 符号:

$ docker build https://github.com/apache/orc.git\#:docker/centos7 -t orc-centos7


注:该命令用于构建ORC文件格式在Centos 7环境下的Docker容器。

1
“-t”标志和名称对于设置图像名称非常重要,否则您将得到<none>图像。 - david
1
我不知道为什么它在我的电脑上失败了。错误提示是“使用前端dockerfile.v0无法解决:读取dockerfile失败:无法加载缓存密钥:尚不支持子目录”。 我正在使用Docker-CE-20.10。 - runzhi xiao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接