Docker + gerrit + jenkins CI环境搭建
Docker环境搭建
由于Docker对windows支持不是特别好,所以选择在Linux上配置docker环境。 ### 下载
Docker[https://www.docker.com/]
使用‘lsb_release -a’命令查看系统版本,下载对应的docker版本
安装
$ sudo dpkg -i docker-version.deb
安装过程中可能会出现insserv相关的警告,这个警告不会影响docker的正常使用。
测试
官网推荐使用docker run hello-world来测试docker是否安装成功!但是执行这个命令时要从docker-hub上下载下来然后再运行的,所以在没有网络的情况下
是会失败的(因为笔者所在公司限制,访问外网比较麻烦)。如果没有网络可以选择下面的方法:
- 查找docker可执行程序
- sudo find / -name dockerd
- 查看docker进程
-
ps -ef grep docker - 如果没有找到进程,运行上步找到的可执行程序
-
Docker镜像制作
- Tomcat Tomcat[http://tomcat.apache.org/] 下载时要选择正确的安装包! 有些包需要从新的编译后才能运行,所以选择已经编译好的包(编译好的包解压后包含了jar文件)
- Jenkins[https://jenkins.io/]
- JDK[http://www.oracle.com/technetwork/java/javase/downloads/index.html]
- Ubuntu镜像
- https://hub.docker.com/explore/[https://hub.docker.com/explore/]
- https://partner-images.canonical.com/core/[https://partner-images.canonical.com/core/]
基础镜像制作
$ docker import ubuntu-version.tar.gz jenkins/ubuntu $ docker images
JDK Tomcat等环境
- Java cp /path/to/jdk-version.tar.gz . tar -zxvf jdk-version.tar.gz mv jdk-version jdk
- Tomcat cp /path/to/apache-tomcat-version.tar.gz . tar -zxvf apache-tomcat-version.tar.gz mv apache-tomcat-version tomcat
- Jenkins cp /path/to/jenkins-version.war /path/to/tomcat/webapps
Dockfile编写
FROM jenkins/ubuntu
MAINTAINER your-name your-email
ENV DEBIAN_FRONTEND noninteractive
ADD /path/to/jdk jdk
ADD /path/to/tomcat tomcat
ENV JAVA_HOME /jdk
ENV JRE_HOME /jdk/jre
ENV TOMCAT_HOME /tomcat
ENV CATALINA_HOME /tomcat
VOLUME ["/tomcat/webapps"]
EXPOSE 8008
#CMD ["/tomcat/bin/catalina.sh", "run"]
ENTRYPOINT ["/tomcat/bin/catalina.sh", "run"]
镜像制作
cd /path/to/Dockerfile
sudo docker build -t jenkins . * 启动镜像 - sudo docker run -d -p 8008:8008 jenkins
Docker备份迁移
- 查看正在运行的容器
- docker ps
- 选择要备份的容器,然后创建快照
- sudo docker commit -p container-id jenkins-bk
- 查看镜像(快照)并导出
- sudo docker images
- sudo docker save -o jenkins.tar.gz jenkins-bk
- 恢复备份
- docker load -i jenkins.tar.gz
- docker images
- docker run -d -p 8008:8008 jenkins-bk
问题
- windows下,在浏览器中输入localhost:8008无法访问tomcat 因为在windows下,使用的是docker client,而docker daemon是运行在虚拟机下的。Windows每次启动docker bash是都会开启 一个默认(default)的虚拟机,而docker daemon就运行在此虚拟机中。使用docker-machine ps 可以看到虚拟机的ip地址。在liulan 器中输入此ip和端口号便能访问到tomcat了。