版权声明:欢迎交流,菲宇运维!
构建上下文是 Dockerfile 和特定位置的任何文件。对于自动构建,构建上下文是包含 Dockerfile 的存储库。
自动构建有几个优点:
GitHub 和 Bitbucket 上的公共和私人仓库都支持自动构建。本文档将指导你完成使用自动构建的过程。
要使用自动构建,必须在 Docker Hub 和托管仓库(GitHub 或 Bitbucket)上拥有一个帐户。如果之前已链接过你的 Github 或 Bitbucket 帐户,则必须选择公共和私有连接类型。
要查看你当前的连接设置,请登录到 Docker Hub 并选择 Profile > Settings > Linked Accounts & Services。
1. 登录 Docker Hub
2. 依次点击菜单 Profile > Settings > Linked Accounts & Services
3. 选择要链接到的服务
系统会提示你选择“Public”、“Private”和“Limited Access”。如果要使用自动构建,则需要 Public 和 Private 连接类型。
4. 点击 Public 和 Private 连接类型下的 Select
系统会提示你输入服务凭证(Bitbucket 或 GitHub)进行登录。例如,Bitbucket 的提示符如下所示:
在授予代码存储库的访问权限之后,系统会跳转回 Docker Hub。链接建立完成。
自动构建仓库依靠与代码仓库的集成来构建。不过,也可以使用 docker push
命令将已构建的镜像推送到这些仓库。
1. 在 Docker Hub 中选择 Create > Create Automated Build
系统会提示用户/组织和代码仓库列表。
2. 从用户/组织中选择
3. 或者,键入以过滤仓库列表
4. 选择要构建的项目
系统会显示 Create Automated Build 对话框。
该对话框会为可以自定义的值设置默认值。默认情况下,Docker 会为仓库中的每个分支构建镜像。它假定 Dockerfile 位于源代码的根目录。建立镜像时,Docker 用分支名称来标记镜像。
5. 通过点击 Click here to customize 来自定义自动构建
指定要从哪个代码分支或代码标签构建。可以通过单击 +
(加号)来添加新的配置。该对话框接受正则表达式。
6. 点击 Create
系统显示你的自动构建首页。
在 GitHub 中,Docker 集成将出现在你的项目仓库的 Settings > Webhooks&services 页面中。
附注:目前 GitHub 已经改版,截图如下。
对于该代码存储库,类似的页面会出现在 Bitbucket 中。删除 Docker 集成会导致你的自动构建停止。
首次创建自动构建时,Docker Hub 会构建你的镜像。几分钟后,你应该可以在 image dashboard 上看到你的新构建。Build Details 页面显示构建系统的日志:
在构建过程中,Docker 会将 Dockerfile 的内容复制到 Docker Hub。Docker 社区(用于公共仓库)或批准的团队成员/组织(用于私人仓库)可以在你的仓库页面上查看 Dockerfile。
构建过程会在与 Dockerfile 相同的目录中查找 README.md
。如果你的仓库中有一个 README.md
文件,它将在仓库中用作 full description(完整描述)。如果在构建之后更改 full description,则在下次运行自动构建时将被覆盖。要防止覆盖,请修改 Git 仓库中的 README.md
。
一次只能触发一次构建,每五分钟不超过一次。如果你已经有一个构建挂起,或者你最近提交了一个构建请求,Docker 会忽略新的请求。
通过查看 Build Details 页面,可以查看特定仓库的构建状态。如果有正在排队或正在进行的构建,则可以单击 Cancel 来取消构建。状态有:
Queued
:排队等待构建镜像。队列时间取决于你可以使用的并发构建数量。Building
:正在构建镜像。Success
:镜像构建成功,没有问题。Error
: 镜像出了问题。点击对应行进入 Builds Details 页面。页面顶部的 banner 显示日志文件的最后一句话,指明错误是什么。如果需要更多信息,滚动至屏幕底部的日志部分。“Build Settings”页面允许你管理现有的自动构建配置并添加新配置。默认情况下,将新代码合并到源代码库时,会触发 DockerHub 镜像的构建。
清除 checkbox 可以关闭这个特性。可以使用这个页面的其他设置来配置并构建镜像。
Build 对话框的顶部是配置好的构建列表。可以从代码分支或构建标签来构建。
每当向代码仓库进行 push 时,Docker 都会对列出的所有内容进行构建。如果指定了分支或标记,则可以通过按下“Trigger”来手动构建该镜像。如果使用正则表达式语法(正则表达式)来定义构建分支或标记,Docker 不会提供手动构建的选项。可以按照下面步骤添加新的构建:
1. 点击加号 +
2. 选择类型
可以通过代码分支或镜像标签来构建。
3. 输入分支或标签的名字
可以输入特定值或使用正则表达式来选择多个值。要查看正则表达式的示例,请按页面右侧的“Show More”链接。
4. 输入 Dockerfile 的位置
5. 指定 Tag 名
6. 点击“Save Changes”
如果有地方弄错了或想删除构建,点击减号 -
然后点击“Save Changes”即可。
仓库链接可将一个自动构建链接到另一个自动构建。如果一个自动构建得到更新,Docker 会触发另一个构建。这可以很容易地确保相关镜像保持同步。可以链接多个镜像存储库。只需链接两个相关版本的一侧,双方都链接导致无尽的构建循环。
按照下列步骤创建链接:
1. 在 Docker Hub 中进入要自动构建的仓库的 Build Settings 页面
2. 在 Repository Links 部分,输入镜像仓库名
远程仓库名应该是官方仓库名(如 ubuntu
)或公共仓库名 namespace/repoName
。
3. 点击 Add
要以编程方式触发自动构建,可以在另一个应用程序(GitHub 或 Bitbucket)中设置远程构建触发器。当激活自动构建的构建触发器时,它会为你提供一个 Token 和一个 URL。
可以通过 curl 来触发构建:
$ curl --data build=true -X POST https://registry.hub.docker.com/u/fungitive/dockerdemo/trigger/5216ef2f-c203-48ce-9d6b-3debb74b502e/
OK
要验证一切都工作正常,可以查看当前页面的“Last 10 Trigger Logs”。
构建kubernetes镜像:
FROM gcr.io/google_containers/kubernetes-apiserver-amd64:v1.9.0