gocd是一个持续集成的工具,可视化效果非常好

运行gocd-server

1
2
3
4
5
docker run -d --name server 
-p8153:8153 -p8154:8154
-v /path/to/godata:/godata
-v /path/to/go:/home/go
gocd/gocd-server:v18.1.0

我们就可以通过http://go-server-ip:8153来访问gocd-server的web了

运行gocd-agent

1
2
3
4
5
6
7
docker run -d --name gocd 
-e AGENT_AUTO_REGISTER_KEY=53f57d90-c749-4758-b430-5af341117b0e
-e AGENT_AUTO_REGISTER_RESOURCES=diagnosis,bj
-e AGENT_AUTO_REGISTER_ENVIRONMENTS=bj
-e AGENT_AUTO_REGISTER_HOSTNAME=diagnosis_bj
-e GO_SERVER_URL=https://go-server-ip:8154/go
gocd/gocd-agent-centos-7:v18.1.0

其中AGENT_AUTO_REGISTER_KEY是在gocd-server的配置中。
执行完之后,就可以在web中看到添加的agent。

安装插件

1
2
cd /path/to/godata/plugins/external
wget https://github.com/gocd-contrib/script-executor-task/releases/download/0.3/script-executor-0.3.0.jar

DOOD

我们通常希望在agent中执行docker命令在宿主中建立镜像运行容器网上大家把这种技术称之为DOOD(docker outside of docker)。
docker命令只能在root权限下执行,但是gocd的脚本是在go用户下运行的所以会报错,解决办法就是想办法让脚本切换到root下运行脚本,具体办法如下:

创建su文件

su的文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include syste 大专栏  在Docker中运行gocdm-auth
session include system-auth
session include postlogin
session optional pam_xauth.so

创建dockerfile制作dood-gocd镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM gocd/gocd-agent-centos-7:v18.1.0
RUN yum install -y yum-utils
device-mapper-persistent-data
lvm2
RUN yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
RUN yum install -y docker-ce
RUN yum -y install sudo
RUN echo 'go ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN gpasswd -a go wheel
COPY su /etc/pam.d/su
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

这里的root方案就是在脚本中调用su root切换到root账户,并且取消输入密码。

1
2
3
4
5
6
7
8
9
10
docker build -t gocd-agent-dood .

docker run -d --name gocd 
-e AGENT_AUTO_REGISTER_KEY=53f57d90-c749-4758-b430-5af341117b0e
-e AGENT_AUTO_REGISTER_RESOURCES=diagnosis,bj
-e AGENT_AUTO_REGISTER_ENVIRONMENTS=bj
-e AGENT_AUTO_REGISTER_HOSTNAME=diagnosis_bj
-e GO_SERVER_URL=https://go-server-ip:8154/go
-v /var/run/docker.sock:/var/run/docker.sock
gocd-agent-dood

上面命令里的挂载就是把宿主机的docker.sock挂载到容器中,这样我们就能在gocd-agent-dood的容器中运行dock命名在宿主机上创建镜像运行容器了。

script如下:

1
2
3
4
su - root <<EOF
xxx
xxx
xxx

在Docker中运行gocd的更多相关文章

  1. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  2. .NET Core Web 应用部署到 Docker 中运行

    环境介绍 : 虚拟机:VirtualBox 5.1.6 系 统:Ubuntu 16.04.1 LTS 系统准备完成后可以使用 sudo apt-get udpate 和 sudo apt-get up ...

  3. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  4. 在Docker中运行torch版的neural style

    相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes 敬请多多关注哈~~~ 在Docker中运行to ...

  5. ASP.NET Core 网站在Docker中运行

    Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...

  6. 在Docker中运行EOS(MAC版)

    在Docker中运行EOS(MAC版) 在Docker中也可以简单快速的构建EOS.IO.笔者在Mac平台下参考官方文档躺了一次河.记录如下: 安装依赖 Docker 版本 17.05或者更高 tes ...

  7. 在docker中运行jenkins实现代码自动发布到测试服务器

    在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...

  8. 在Docker中运行纸壳CMS并配置使用MySql

    纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. GitHub:https://github.com/ ...

  9. 在docker中运行elasticsearch时go程序无法连接到节点

    错误信息: panic: no active connection found: no Elasticsearch node available 在docker中运行es时,默认启动sniffing  ...

随机推荐

  1. Juptyer中的图表显示参数

    from pylab import * import seaborn as sns # 图表显示参数 from IPython.display import display %matplotlib i ...

  2. Tidb go mac 上开发环境搭建

    1.安装golang 运行环境 2.安装lite ide 工具 3.安装dep 包管理工具 4.安装delve debuger 调试工具 我用的是mac hight sierra 10.13 版, 会 ...

  3. 吴裕雄--天生自然 PYTHON3开发学习:MySQL - mysql-connector 驱动

    import mysql.connector mydb = mysql.connector.connect( host="localhost", # 数据库主机地址 user=&q ...

  4. android上线之前代码混淆加密

    https://blog.csdn.net/zuiwuyuan/article/details/48552701# https://blog.csdn.net/chaoyu168/article/de ...

  5. mysql计算时间差-本例为计算分钟差然后/60计算小时保留一位小数,由于直接得小时只会取整

    -- ORDER_TIME datetime NOT NULL(字段类型)SELECTso.`ID`,so.`ORDER_TIME`,NOW(),CONCAT(ROUND(TIMESTAMPDIFF( ...

  6. 3)利用Build.php自动创建目录和文件

    (1)首先做法参照: thinkphp5的手册的  命令行--->自动生成目录结构 或者看云的资料:https://www.kancloud.cn/manual/thinkphp5/118021 ...

  7. 实战_3:新建产品配置(product)并导出项目

    产品配置Product 产品配置用于定义和管理RCP应用的多个方面特征.并支持将RCP项目导出为部署包(类似eclipse压缩包),可以直接部署到其他环境上使用. 产品配置必须新建一个 扩展名为 .p ...

  8. iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

    iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有 ...

  9. Swiper中文网

    http://3.swiper.com.cn/api/Slides_grid/2014/1215/24.html slidesPerView :2,   即设置slider容器能够同时显示的slide ...

  10. RabbitMQ传输原理、五种模式

    本文代码基于SpringBoot,文末有代码连接 .首先是一些在Spring Boot的一些配置和概念,然后跟随代码看下五种模式 MQ两种消息传输方式,点对点(代码中的简单传递模式),发布/订阅(代码 ...