Docker 學習 (三)—— 持續集成環境搭建

在Docker上搭建持續集成環境,環境採用 Jenkins、subversion。html

環境:使用CentOS7系統。linux

1、 配置Jenkins 容器:docker

# docker pull jenkins  //下載容器bash

在 Docker 主機上,建立一個目錄(例如,/home/jenkins_home),並修改權限(chmod 777)以便 Jenkins 容器能讀寫該目錄,socket

若是不是root權限下,最好對jeckins_home受權到當前使用用戶名下,如:chgrp -R admin jenkins_home , chown -R admin jenkins_home tcp

# cd /home   svn

# mkdir /jenkins_home工具

# chmod 777 jenkins_home/測試

啓動jeckins,-v 映射端口與目錄,也可直接目錄建在/var上,ui

不須要對應,可直接#docker run -d -t --name myjenkins -p 8080:8080 -v /home/jenkins_home jenkins       //linux中建立jenkins_home

#docker run -d -t --name myjenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home jenkins

上述命令執行完成後,可直接在宿主機上訪問, http://192.168.153.151:8080/ 訪問,以下:

能夠安裝插件,系統管理->插件管理,可選插件進行搜索:

該插件可以集成 Jenkins 與 Docker:

Docker Plugin

該插件用以發佈構建生成 HTML 報表,方便往後查看:

HTML Publisher Plugin

2、配置subversion容器:

#docker pull bsboiko/subversion

#docker run -i -t bsboiko/subversion /bin/bash    //進入交互模式

在容器中建立目錄

root@56d82455dfa7:/# mkdir -p /var/svn/repos

基於該目錄建立 Subversion 資源庫

root@56d82455dfa7:/# svnadmin create /var/svn/repos

root@56d82455dfa7:/# cd /var/svn/repos/conf

在資源庫目錄下的 svnserve.conf 文件中刪除「password-db = passwd」前面的註釋符 #,

root@56d82455dfa7:/# vi svnserve.conf

 

anon-access = read  

auth-access = write  

password-db = passwd  

authz-db = authz

realm = /var/svn/repos //認證空間名,版本庫所在目錄

:wq

並在 passwd 文件中添加一行「lb=1234」,是本身定義的用戶名/密碼

root@56d82455dfa7:/# vi passwd

lb=1234  //這裏的username和password本身設置 

:wq

root@56d82455dfa7:/# vi authz  //authz最後加上如下兩行(這兩行解決了 SVN客戶端解決authorization failed問題)

 

[groups]   

admin = lb  

user = shenrui   

[/]   

@admin = rw   

@user = rw   

* = r

按ESC,:wq保存

root@56d82455dfa7:/# exit

#docker commit 56d82455dfa7 mysvn //保存下來建立一個新鏡像 mysvn,56d82455dfa7是container id

啓動 mysvn 容器。啓動時,添加容器到主機的端口映射「-p 3690:3690」

#docker run -t -d -p 3690:3690 --name mysvn mysvn svnserve -d --foreground -r /var/svn/repos

# docker images //查看一下安裝的鏡像

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE

mysvn                latest              263b26a72e17        3 minutes ago       351.6 MB

jenkins              latest              e9a6b4ad873f        2 days ago          708.9 MB

bsboiko/subversion   latest              00a5c92e7403        21 months ago       351.5 MB

$ docker ps  //查看運行的容器

CONTAINER ID    IMAGE    COMMAND                  CREATED             STATUS              PORTS                               NAMES

6f4ebcd30df8      jenkins     "/bin/tini -- /usr/lo"   22 seconds ago    Up 21 seconds    0.0.0.0:8080->8080/tcp, 50000/tcp   myjenkins

e5eac8cda3c1    mysvn     svnserve -d --foregr"   21 minutes ago    Up 21 minutes    0.0.0.0:3690->3690/tcp              mysvn

 

可進入查看SVN啓動狀況

# docker exec -it e5eac8cda3c1 /bin/bash

root@263b26a72e17:/# netstat -natp | grep svnserve

root@263b26a72e17:/# ps aux | grep svnserve  //ps -ef|grep svnserve

(或重啓動,可直接使用鏡像,不須要此操做):

root@263b26a72e17:/# kill -9 4650 (進程ID)

root@263b26a72e17:/#svnserve -d -r /var/svn/repos 

可在window用SVN工具測試是否成功,用Repo-browser菜單功能。地址:svn://192.168.153.151/repos

3、配置Sahi 鏡像

# docker pull shenrui/sahi

# docker run -i -t shenrui/sahi /bin/bash    //進入交互模式

3、配置TCP監聽端口

接下來要開啓 Docker 的 TCP 監聽端口。開啓的方法在不一樣的系統上有所不一樣。如 Docker 主機爲 RHEL 6.5。開啓的方法是在/etc/sysconfig/docker 中設置 other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock",而後運行「service docker restart」重啓 Docker 服務。

本實例 Docker 主機採用CentOS 7,方法以下:

在一個新的Socket中啓用一個遠程API

#touch /etc/systemd/system/docker-tcp.socket

#cd /etc/systemd/system/

#vi docker-tcp.socket //輸入下列內容

[Unit]

Description=Docker Socket for the API

[Socket]

ListenStream=2375

BindIPv6Only=both

Service=docker.service

[Install]

WantedBy=sockets.target

按Esc,:wq保存

#chmod 755 sockets.target

啓用這個服務開機啓動

#systemctl enable docker-tcp.socket

#systemctl stop docker

#systemctl start docker-tcp.socket

#systemctl start docker

測試是否成功

docker -H tcp://127.0.0.1:2375 ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES

916723fd2350        jenkins             "/bin/tini -- /usr/lo"   20 minutes ago      Up 20 minutes       0.0.0.0:8080->8080/tcp, 50000/tcp   myjenkins

完成後,進入 Jenkins 的系統配置頁面(系統管理>系統設置),在最底部比以前增長了一個 Cloud 的部分。點擊 新增一個雲(Add a new cloud),選擇 Docker 添加一個 Docker 主機。這裏,由於 Jenkins 運行在 Docker 的容器裏,直接用私有 IP(ifconfig 裏 docker0 對應的 IP)加端口 2375 填寫 Docker URL 輸入域。

 

 

 

原文引用:http://www.ibm.com/developerworks/cn/opensource/os-cn-JenkinsDockerSahi/index.html

引用:http://sahipro.com/docs/using-sahi/configuring-sahi-with-xvbf.html

相關文章
相關標籤/搜索