1、Jenkins镜像

Docker容器内的Jenkins使用容器外宿主机的Docker(即DooD,还有另外的情况就是DioD),google一下有几种说法,但是都没试成功(试过一种就是修改宿主机/etc/default/docker的DOCKER_OPTS配置,总是出现拒绝访问的问题,其实就是容器的jenkins用户没有权限访问容器外的docker命令),按照大神的思路,把容器内的jenkins用户加入到docker组中,即可成功访问docker命令了。

  1.1 制作自定义jenkins镜像

镜像Dockerfile:

FROM jenkins

USER root
ARG dockerGid= RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group USER jenkins

构建和启动镜像:

$ docker build . -t my-jenkins
$ docker run --name jenkins -p 7080:8080 -p 50000:50000 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /var/docker_data/jenkins/jenkins_home:/var/jenkins_home -v /var/docker_data/jenkins/settings:/var/settings -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d my-jenkins
注意这两个volume参数(将jenkins容器内的docker命令指向了宿主机):
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker 之后直接在jenkins的project里面就可以使用docker命令了,比如使用maven的docker插件打包镜像。

 1.2 可能出现的问题 - 找不到某些library

之后再另外一台机器部署jenkins的时候发现的这个问题,就是再jenkins容器内调用docker命令时报错(上一次可以是因为我装jenkins上装了一些插件,这些插件已经安装了这些包):

docker: error while loading shared libraries: libltdl.so.: cannot open shared object file: No such file or directory
Build step 'Execute shell' marked build as failure

原因是jenkins容器内部没有这个包,解决的办法有两个:

1、将容器宿主机的包映射到容器内:

#省略了其他docker运行参数,只列出了缺少的包映射volume
$ docker run --name jenkins -v /usr/lib/x86_64-linux-gnu/libltdl.so.:/usr/lib/x86_64-linux-gnu/libltdl.so. -d my-jenkins

  2、对jenkins镜像进行封装,官方的jenkins镜像是基于debian jessie的,dockerfile最好把源切换成国内的。Dockerfile内容如下:

FROM jenkins

USER root
#清除了基础镜像设置的源,切换成阿里云的jessie源
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
&& echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
&& echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
#更新源并安装缺少的包
RUN apt-get update && apt-get install -y libltdl7 ARG dockerGid= RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group \
USER jenkins
												

最新文章

  1. Used Query
  2. WAMPServer 默认安装启动后,图标显示橙黄色
  3. 使用BeanUtils工具类操作Java bean
  4. 统一软件开发过程(rup)理解
  5. multi2sim,booksim简介
  6. linux下的mysql乱码问题
  7. 开篇,UVA 755 && POJ 1002 487--3279 (Trie + DFS / sort)
  8. OC4_实例变量的作用域
  9. Sharepoint中用treeview来显示组织机构的人员状态的webpart
  10. spring3.1的BeanFactory与Quartz1.8整合
  11. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) ( 莫队 )
  12. JS_ Date对象应用实例
  13. python的日志配置
  14. mysql数据库允许远程连接
  15. C# 线程 正确使用Thread.Join()停止方式
  16. Sublime Text3—系统设置
  17. MySql利用mysqldump导出/导入数据库表数据
  18. java 的Colections类(Java也有python类似列表的反转、排序等方法)
  19. 2017-2018-2 20155315《网络对抗技术》Exp7 :网络欺诈防范
  20. BUG笔记:Win8 IE10下input[type="password"]内字符显示被截取问题

热门文章

  1. LoadRunner基础知识
  2. MySQL存储过程(PROCEDURE)(二)
  3. 2018-2019-2 网络对抗技术 20165328 Exp4 恶意代码分析
  4. 范围for循环
  5. 基于Filebeat+Kafka+Flink仿天猫双11实时交易额
  6. 字符串正则匹配(递归/DP)
  7. Codeforces 581F Zublicanes and Mumocrates 树形dp
  8. Unity UGUI实现鼠标拖动图片
  9. 可变参数函数(stdarg.h)的使用
  10. js判断时间段