在docker里运行jenkins

半兽人 发表于: 2017-05-23   最后更新时间: 2022-09-28 14:28:38  
{{totalSubscript}} 订阅, 4,790 游览

在docker里运行jenkins server。

  1. docker验证

    简单地理解docker是一个类似于虚拟机的容器,提供一个相对独立且与host隔离的环境, docker比虚拟机更轻量级,可以用来软件的测试,打包,发布,运行等。

    检查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上可以看到jenkins的image的下载方法。执行如下命令下载image:

     sudo docker pull jenkinsci/jenkins
    
  3. 运行jenkins docker
    在运行之前可以先查看jenkins的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,输入https://10.1.70.211:8088/

    如果提示你输入密码,通过查询日志 获取jenkins密码验证。

     docker logs 17c627549827ce586a7cf9260caad05aecb09a88a2187716eba351d8e83e8c6b
    

    大功告成!

更新于 2022-09-28

古德奈特 7年前

博主的博客系统是什么系统啊,挺好的

半兽人 -> 古德奈特 7年前

功能拼接的,看哪个好看,就自己模仿写的,风格是markdown。

查看docker更多相关的文章或提一个关于docker的问题,也可以与我们一起分享文章