首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Drone.io构建Docker镜像

使用Drone.io构建Docker镜像
EN

Stack Overflow用户
提问于 2014-07-25 01:00:18
回答 3查看 17.9K关注 0票数 10

我在亚马逊网络服务中运行自己的Drone实例,我希望它能构建一个docker镜像并将其推送到我的存储库中。Drone在docker容器中运行它的构建环境,所以我基本上想从docker容器内部构建docker镜像。我找到了this,看到你可以绑定安装码头插座。我如何使用无人机做到这一点?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -it -v /var/run/docker.sock:/var/run/docker.sock mycompany/buildimage

这样我就可以从我的容器内部运行docker build。或者你知道另一个CI工具,我可以运行我的自定义脚本并构建docker镜像。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-25 01:40:47

答案已过期,请查看下面@Brad的解决方案,仅供参考

在你的mycompany/buildimage

安装docker客户端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://get.docker.io/builds/Linux/x86_64/docker-latest -o /usr/local/bin/docker
chmod +x /usr/local/bin/docker 

然后,您可以使用docker主机环境运行docker build命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker -H unix:///var/run/docker.sock build .

为了方便和透明,通常可以设置DOCKER_HOST环境。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ export DOCKER_HOST="unix:///var/run/docker.sock"
$ docker build .

不熟悉无人机安装,但这是docker提供的方式

票数 1
EN

Stack Overflow用户

发布于 2016-08-21 00:49:21

请注意,此答案适用于drone版本0.5

您可以使用Docker plugin构建和发布Docker镜像,将其作为构建管道中的一个步骤。在下面的示例.drone.yml文件中,我添加了一个使用docker插件的发布步骤。请注意,您需要将foo/bar替换为要发布到的DockerHub存储库的名称。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pipeline:
  build:
    image: golang
    commands:
      - go build
      - go test
  publish:
    image: plugins/docker
    repo: foo/bar

在许多情况下,您可能希望将此步骤的执行限制在某些分支上。这可以通过添加运行时条件来完成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  publish:
    image: plugins/docker
    repo: foo/bar
    when:
      branch: master

您需要向drone提供Docker注册表的凭据,才能发布drone。这些凭据可以直接在yaml文件中声明,但通常不建议在yaml中以纯文本形式存储这些值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  publish:
    image: plugins/docker
    repo: foo/bar
    username: johnsmith
    password: pa55word
    when:
      branch: master

您也可以使用内置的秘密存储来提供凭据。可以使用Drone命令行实用程序将秘密添加到每个存储库的秘密存储中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  export DRONE_SERVER=http://drone.server.address.com
  export DRONE_TOKEN=...

  drone secret add --image plugins/docker \
    octocat/hello-world DOCKER_USERNAME johnsmith

  drone secret add --image plugins/docker \
    octocat/hello-world DOCKER_PASSWORD pa55word

在上面的示例中,--image标志用于限制我们将Docker凭证公开给哪些秘密,我们将其设置为docker插件。octocat/hello-world参数表示您的GitHub存储库名称,应该替换为正确的值。

Mouting Voume(备用方法)

您还询问是否可以将Docker套接字挂载到您的构建环境中。这是可能的,但需要一些额外的权限(在UI中将您的构建标记为受信任)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pipeline:
  build:
    image: docker
    commands:
      - docker build ...
      - docker run ...
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

这种方法的唯一问题是,如果构建失败,您可能无法清理在构建过程中创建的映像或容器。

此外,如果您的存储库是公共的并接受拉取请求,则不应使用此方法。恶意拉入请求可能会利用主机Docker套接字向您的构建环境进行攻击,从而允许访问主机。

票数 22
EN

Stack Overflow用户

发布于 2014-09-03 18:34:55

我写了 ,我还解决了一些常见的问题。

请记住,Drone的构建环境本身就是Docker容器,这意味着您将处于Docker-in-Docker的情况下: Docker不能在Docker容器中正确运行。公认的解决方案是使用wrapdocker脚本启动内部Docker实例。我的最终设置如下所示:

对于Drone,您需要在构建环境的Dockerfile中添加类似以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# install docker
RUN apt-get install -y apparmor  
RUN curl -s https://get.docker.io/ubuntu/ | sudo sh  
ADD wrapdocker /usr/local/bin/wrapdocker
RUN chmod +x /usr/local/bin/wrapdocker

这里假设wrapdocker脚本在本地可用。或者,您可以直接从github获取wrapdocker。然后,给出一个如下的.drone.yml文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
image: http://my-docker-registry/my-docker-image:version  
script:  
  - ./.drone/build.sh

您的build.sh将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
set -e  
cd /var/cache/drone/src/path/to/app

# [pass tests here]

wrapdocker &  
sleep 5

docker build -t docker-registry/image-name .  
docker push docker-registry/image-name

这只是一种方法。唯一的限制是wrapdocker用于启动构建容器中的Docker守护进程。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24946414

复制
相关文章
Shazam地理位置漏洞分析:单击链接即可窃取用户的准确位置
近期,研究人员在流行的Shazam应用程序中发现了一个漏洞。在该漏洞的帮助下,攻击者只需单击一个链接就可以窃取用户的精确位置!目前,受该漏洞影响的用户数量已经超过了一个亿,攻击者只需要通过单击链接即可访问受应用程序权限保护的设备功能。实际上,如果攻击者更聪明的话,这个漏洞也可以被转换为零点击漏洞。但不幸的是,苹果和谷歌拒绝为这个漏洞提供任何的漏洞奖励,不过大家不用担心,因为问题已经解决了…
FB客服
2021/03/09
7010
Shazam地理位置漏洞分析:单击链接即可窃取用户的准确位置
Android Button 单击事件
方法一:在XML文件中指定 单击事件函数 <Button             android:id="@+id/button1"             android:layout_width="120dip"             android:layout_height="wrap_content"             android:layout_alignParentLeft="true"             android:layout_below="@+id/textView1
磊哥
2018/05/08
1.7K0
下拉框、下拉控件之Select2。自动补全的使用
1、使用插件,首先要引入别人的插件了,你可以选择离线(无网络)或者在线引用的(如果有网络)。
别先生
2019/06/03
2.4K0
Selenium中单击Element:ElementClickInterceptedException
element = driver.find_element_by_css(‘div[class*=”loadingWhiteBox”]’)
kirin
2021/04/02
1.1K0
weex-08-单击事件
本节任务 学会组件添加单击事件 标准格式 <text v-on:click="方法名称">点我啊</text> 省略格式 <text @click="方法名称">点我啊</text> 下面我们创建
酷走天涯
2018/09/14
1.7K0
weex-08-单击事件
js获取鼠标单击键
利用OnMousedown和OnContextmenu添加鼠标左中右键单击的处理,返回event.button的值来判断是单击了哪个键。
DougWang
2020/02/18
5.3K0
XAML常用控件2
除了我们之前讲过的Grid,StackPanel,Border布局控件,xaml中还有如下几个布局控件:
宿春磊Charles
2021/11/05
2.3K0
【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解
WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。
愚公搬代码
2023/10/12
1.3K0
Intellij IDEA从Github上拉代码然后出现这么个对话框单击Git Repository URL后面的下拉菜单,可以选择以前fork过的工程,然后单击clone,就OK了
前提在IDEA中的github及git账号路径等相关设置已经完毕 拉代码 然后出现这么个对话框 这里又出现了个Test按钮,也可以试试到底Test能不能成功 单击Git Repository URL后
JavaEdge
2018/05/16
1.3K0
HarmonyOS实战—实现单击事件流程
1. 什么是事件? 事件就是可以被识别的操作 。就是可以被文本、按钮、图片等组件识别的操作。 常见的事件有:单击、双击、长按、还有触摸事件 。 可以给文本、按钮等添加不同的事件。比如添加了单击事件之后
兮动人
2021/08/20
1.4K0
HTML单击按钮弹出悬浮窗+页面遮罩
<meta charset="utf-8" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
用户7718188
2021/10/08
15.8K1
下拉刷新
getMeasuredHeight():获取测量完的高度,只要在onMeasure方法执行完,就可以用
六月的雨
2022/01/17
2.2K0
CSS 下拉菜单_下拉菜单html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/01
6.8K0
双击事件与单击事件的那些事
合情合理,双击事件也是两次点击事件,所以同时会触发单击事件click和双击事件dblclick。但是需求是单击和双击不同的处理,所以双击的时候不应该触发单击事件。
赤蓝紫
2023/03/16
3.8K0
双击事件与单击事件的那些事
超详细论文排版秘籍,宜收藏!
👆点击“博文视点Broadview”,获取更多书讯 又到一年毕业季,你的论文定稿了吗?很多小伙伴在进行论文排版时,总会遇到各种各样的问题,本文就来手把手教大家如何从头开始给自己的论文排一个好看的版式! 排版思维及页面设置 论文排版的顺序和书写的顺序不完全相同。 论文排版主要包括:前置部分(封 面、诚信书、致谢、摘要及目录)、正文、参考文献和附录。 小贴士 较为高效的排版方法是,在书写的过程中完成正文的排版。然后进行参考文献、附录的排版,最后添加前置部分,即封面、目录等。 在调整文本之前,一定要先做好页面
博文视点Broadview
2022/05/27
4.7K1
超详细论文排版秘籍,宜收藏!
利用Python自动抢火车票真的不难,100行代码即可完成
去年过年的时候,有一个新闻报道:网上的那些抢票软件比如:某程、某猪....只要你加钱就会让你更快的抢到回家的车票,然而并没有什么用,如果你自己有去手动刷过票的话,就会发现,你在12306上面看到有票但是这些抢票软件并没有给你抢到票,所以那些都是假....
python学习教程
2020/06/04
1.7K0
jQuery实现单击页面产生随机字符效果
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
浩Coding
2019/07/02
2.7K0
jQuery实现单击页面产生随机字符效果
点击加载更多

相似问题

DataGridTemplateColumn used CellEditingTemplate组合框-单击即可自动下拉

27

无需单击即可自动滚动Jquery

117

单击标签即可切换制作下拉菜单

19

单击按钮即可清除填充的下拉列表

50

带有下拉箭头的DataGridComboBoxColumn

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文