jenkins和docker 在docker裡執行jenkins

weixin_34054866發表於2016-07-13

在docker裡執行jenkins server。

文章來自:http://www.ciandcd.com
文中的程式碼來自可以從github下載: https://github.com/ciandcd

1. 安裝docker
簡單地理解docker是一個類似於虛擬機器的容器,提供一個相對獨立且與host隔離的環境, docker比虛擬機器更輕量級,可以用來軟體的測試,打包,釋出,執行等。
安裝docker,我的是ubuntu 16.04的環境,通過如下命令簡單地安裝:
sudo apt install docker docker.io
檢查docker安裝成功:
sudo docker info

Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 2
Server Version: 1.11.2
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 104
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.4.0-28-generic
Operating System: Ubuntu 16.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.954 GiB
Name: osboxes
ID: WSS3:LUQM:265S:YA4B:VGLL:PK6K:3MCT:FN2W:NLED:2O7Q:NOET:FWKV
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support

 
2. 下載jenkins docker image
在hub.docker.com(https://hub.docker.com/r/jenkinsci/jenkins/)上可以看到jenkins的image的下載方法。
在命令列執行如下命令將下載jenkins的image:
sudo docker pull jenkinsci/jenkins
 
3. 執行jenkins docker
在執行之前可以先檢視jenkins的dockerfile(https://github.com/jenkinsci/docker/blob/master/Dockerfile),通過jenkins的dockerfile大概可以瞭解jenkins的docker image裡包含和設定了什麼。
 
準備jenkins的log配置檔案:
cd /home/osboxes/jenkins_home_docker
cat > log.properties <<EOF
handlers=java.util.logging.ConsoleHandler
jenkins.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST
EOF
 
執行jenkins的docker image:
sudo docker run --name myjenkins -p 8088:8080 -p 50000:50000 -d --env JAVA_OPTS="-Xmx8192m" --env JAVA_OPTS="-Djava.util.logging.config.file=/home/osboxes/jenkins_home_docker/log.properties"  --env JENKINS_SLAVE_AGENT_PORT=50000 -v /home/osboxes/jenkins_home_docker:/var/jenkins_home  jenkinsci/jenkins
 
docker命令列解釋:
docker例項的名字: --name myjenkins,此docker例項的名字為myjenkins。
docker埠對映: -p IP:host_port:container_port, -p 8088:8080 將docker裡的8080對映到host中的8088。
環境變數: --env name=value。
目錄對映: -v localdir:dockerdir, -v /home/osboxes/jenkins_home_docker:/var/jenkins_home  jenkinsci/jenkins將docker裡的JENKINS_HOME /var/jenkins_home對映為host中的/home/osboxes/jenkins_home_docker。
執行的docker image: jenkinsci/jenkins
-d: docker instance將作為demon在後臺執行。
如果是java1.7及以前版本,組好設定--env  JAVA_OPTS=”-Xmx8192m -XX:PermSize=256m -XX:MaxPermSize=1024m”, java1.8後的直接--env JAVA_OPTS="-Xmx8192m"。
 
檢查jenkins docker是否執行:

sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14fc572bc91c jenkinsci/jenkins "/bin/tini -- /usr/lo" 18 hours ago Up 18 hours 0.0.0.0:50000->50000/tcp, 0.0.0.0:8088->8080/tcp myjenkins

 

4. 配置Jenkins

在瀏覽器中開啟jenkins,然後配置jenkins,到此時就跟我們之前講的jenkins沒有差別了。

 

相關文章