docker部署jenkins

Docker+Jenkins一键自动化部署、超简单~ Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成 阅读详情

一、基础环境

0.说明

此文档为docker环境下部署jenkins,包括以docker-compose方式启动。
如果有错误大佬麻烦指出

1.环境说明

部署系统:centos7.9
docker版本:20.10.16
网络环境:外网环境
硬件环境:vmware虚拟机环境
虚拟机配置:cpu-4c 内存-16G(实际上用不到这么多,只是我给的比较富裕,具体可以看自己情况自行加减)
docker镜像源:阿里镜像源

2.镜像选择

镜像名:bitnami/jenkins
dockerhub地址:https://hub.docker.com/r/bitnami/jenkins
版本选择:最新版
选择原因:jenkins官方的dockerhub已经好几年没有维护了,用的版本还是非常老的版本
所以这里用第三方开源项目bitnami的jenkins镜像
在这里插入图片描述
从上次更新时间来看,bitnami维护的jenkins docker镜像较为活跃。

二、镜像部署

0.部署前准备

确保docker运行正常,确定docker与dockerhub镜像仓库连接正常。

1.拉取镜像

我这边直接拉取最新版镜像

docker pull bitnami/jenkins

如果有特殊需求可以在dockerhub的tag页面拉取自己需要的版本
在这里插入图片描述
没有特殊需求拉取latest版本即可
命令:docker pull bitnami/jenkins
结果:

[root@cicd ~]# docker pull bitnami/jenkins
Using default tag: latest
latest: Pulling from bitnami/jenkins
0796bf144e3f: Pull complete 
611583d8f27f: Pull complete 
e3ae7d1a3c24: Pull complete 
354b18b63610: Pull complete 
9b4a65d0e880: Pull complete 
63f3fe641127: Pull complete 
97906d956f33: Pull complete 
c5ea5a3792f2: Pull complete 
de3feb83ade1: Pull complete 
efacc1f406c0: Pull complete 
de2f7ee0bbcd: Pull complete 
Digest: sha256:be3432aab368e4f6217628cd81a8865fe476f895287a9e3d21ba44a3141f00b5
Status: Downloaded newer image for bitnami/jenkins:latest
docker.io/bitnami/jenkins:latest

查看一下,拉取成功

[root@cicd ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
bitnami/jenkins   latest    ef96289220b9   13 months ago   595MB

2.运行容器

创建网络
命令:docker network create jenkins-network
结果:

[root@cicd ~]# docker network create jenkins-network
1aa7879e1659e1828863107d5a7cac8a70243c83265caf665f4f2b0742c024fb

查看镜像用户权限
命令:docker inspect ef96289220b9 |grep User
结果:

[root@cicd ~]# docker inspect ef96289220b9 |grep User
            "User": "1001",
            "User": "1001",

创建数据目录(可自行选择创建位置)并授权给docker
如果docker容器启动时用 --privileged=true 参数则可以不用授权
命令:mkdir -p /data/jenkins
chown 1001:1001 /data/jenkins -R
结果:

[root@cicd ~]# mkdir -p /data/jenkins
[root@cicd ~]# chown 1001:1001 /data/jenkins -R

运行容器
命令:

docker run -d -p 80:8080 --name jenkins \
--network jenkins-network \
--volume /data/jenkins/data:/bitnami/jenkins \
bitnami/jenkins:latest

结果:

[root@cicd ~]# docker run -d -p 80:8080 --name jenkins \
> --network jenkins-network \
> --volume /data/jenkins/data:/bitnami/jenkins \
> bitnami/jenkins:latest
37cc0af8053c595d68067ae03dc57e520562d0f6065cc0453051c41f7bdbc517

查看日志:

[root@cicd ~]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                                                        NAMES
37cc0af8053c   bitnami/jenkins:latest   "/opt/bitnami/script…"   2 seconds ago   Up 2 seconds   8443/tcp, 50000/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp   jenkins
[root@cicd ~]# docker logs -f 37cc0af8053c
jenkins 08:48:14.45 
jenkins 08:48:14.45 Welcome to the Bitnami jenkins container
jenkins 08:48:14.45 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-jenkins
jenkins 08:48:14.45 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-jenkins/issues
jenkins 08:48:14.45 
jenkins 08:48:14.45 INFO  ==> Configuring libnss_wrapper
jenkins 08:48:14.46 INFO  ==> ** Starting Jenkins setup **
realpath: /usr/share/jenkins/ref: No such file or directory
jenkins 08:48:14.52 INFO  ==> Creating init script
jenkins 08:48:14.52 INFO  ==> Starting Jenkins in background
jenkins 08:48:44.54 INFO  ==> Stopping Jenkins
jenkins 08:48:45.54 INFO  ==> ** Jenkins setup finished! **

jenkins 08:48:45.55 INFO  ==> ** Starting Jenkins **
Running from: /opt/bitnami/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
2023-02-20 08:48:45.735+0000 [id=1]     INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @176ms to org.eclipse.jetty.util.log.JavaUtilLog
2023-02-20 08:48:45.773+0000 [id=1]     INFO    winstone.Logger#logInternal: Beginning extraction from war file
2023-02-20 08:48:45.788+0000 [id=1]     WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2023-02-20 08:48:45.816+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 1.8.0_312-b07
2023-02-20 08:48:45.933+0000 [id=1]     INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2023-02-20 08:48:45.951+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2023-02-20 08:48:45.952+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2023-02-20 08:48:45.952+0000 [id=1]     INFO    o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 660000ms
2023-02-20 08:48:46.135+0000 [id=1]     INFO    hudson.WebAppMain#contextInitialized: Jenkins home directory: /bitnami/jenkins/home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2023-02-20 08:48:46.172+0000 [id=1]     INFO    o.e.j.s.handler.ContextHandler#doStart: Started w.@791d1f8b{Jenkins v2.319.1,/,file:///bitnami/jenkins/home/war/,AVAILABLE}{/bitnami/jenkins/home/war}
2023-02-20 08:48:46.188+0000 [id=1]     INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@3a03464{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2023-02-20 08:48:46.188+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: Started @629ms
2023-02-20 08:48:46.188+0000 [id=22]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2023-02-20 08:48:46.757+0000 [id=29]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2023-02-20 08:48:46.846+0000 [id=28]    WARNING hudson.ClassicPluginStrategy#createPluginWrapper: encountered /bitnami/jenkins/home/plugins/swarm-3.22.jpi under a nonstandard name; expected swarm.jpi
2023-02-20 08:48:46.862+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2023-02-20 08:48:48.960+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2023-02-20 08:48:48.982+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2023-02-20 08:48:48.988+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2023-02-20 08:48:49.718+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: System config loaded
2023-02-20 08:48:49.718+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: System config adapted
2023-02-20 08:48:49.720+0000 [id=33]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2023-02-20 08:48:49.721+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2023-02-20 08:48:49.747+0000 [id=47]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata
2023-02-20 08:48:49.749+0000 [id=47]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 2 ms
2023-02-20 08:48:49.766+0000 [id=31]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2023-02-20 08:48:49.775+0000 [id=21]    INFO    hudson.WebAppMain$3#run: Jenkins is fully up and running
2023-02-20 08:53:49.008+0000 [id=61]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Periodic background build discarder
2023-02-20 08:53:49.009+0000 [id=61]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Periodic background build discarder. 1 ms

访问:http://服务器ip:80
在这里插入图片描述
用户名:user
密码:bitnami
在这里插入图片描述

3. 详细参数

用户名
JENKINS_USERNAME: Jenkins admin username. Default: user
密码
JENKINS_PASSWORD: Jenkins admin password. Default: bitnami
邮箱
JENKINS_EMAIL: Jenkins admin email. Default: user@example.com
家目录
JENKINS_HOME: Jenkins home directory. Default: /bitnami/jenkins/home
http端口
JENKINS_HTTP_PORT_NUMBER: Port used by Jenkins for HTTP. Default: 8080
https端口
JENKINS_HTTPS_PORT_NUMBER: Port used by Jenkins for HTTPS. Default: 8443
http暴露端口
JENKINS_EXTERNAL_HTTP_PORT_NUMBER: Port to used by Jenkins to generate URLs and links when accessing using HTTP. Default: 80
https暴露端口
JENKINS_EXTERNAL_HTTPS_PORT_NUMBER: Port to used by Jenkins to generate URLs and links when accessing using HTTPS. Default: 443
JNLP端口
JENKINS_JNLP_PORT_NUMBER: Port used by Jenkins for JNLP. Default: 50000
仅启动https
JENKINS_FORCE_HTTPS: Enable serving Jenkins only through HTTPS. Default: no
跳过执行初始引导
JENKINS_SKIP_BOOTSTRAP: Skip performing the initial bootstrapping. Default: no

使用时以 --env 参数名=参数值方式启用 如:

docker run -d -p 80:8080 --name jenkins \
  --env JENKINS_PASSWORD=my_password \
  --network jenkins-network \
  --volume /path/to/jenkins-persistence:/bitnami/jenkins \
  bitnami/jenkins:latest

三、docker-compose方式部署jenkins

1.下载配置文件

找一个自定目录下载官方配置文件
命令:
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/jenkins/docker-compose.yml > docker-compose.yml

2.修改配置文件

配置文件内容

version: '2'

services:
  jenkins:
    image: docker.io/bitnami/jenkins:2
    ports:
      - '80:8080'
    environment:
      - JENKINS_PASSWORD=bitnami
    volumes:
      - 'jenkins_data:/bitnami/jenkins'

volumes:
  jenkins_data:
    driver: local

根据自己需要修改配置文件
确保已经安装docker-compose后启动
docker-compose up -d
运行结果:

[root@cicd jenkins]# docker-compose up -d
[+] Running 12/12
 ⠿ jenkins Pulled                                                                                                                               29.7s
   ⠿ 23b664af592e Pull complete                                                                                                                  3.1s
   ⠿ 9780f2467d8a Pull complete                                                                                                                  3.2s
   ⠿ 75f25be3b4e5 Pull complete                                                                                                                  3.5s
   ⠿ 3415add13510 Pull complete                                                                                                                  3.6s
   ⠿ 79ff1d6e3cce Pull complete                                                                                                                 10.4s
   ⠿ 40d29eca4833 Pull complete                                                                                                                 10.4s
   ⠿ 0cf3ee5e27b2 Pull complete                                                                                                                 10.6s
   ⠿ beb6a9e999e0 Pull complete                                                                                                                 13.2s
   ⠿ 25b8ec42c87e Pull complete                                                                                                                 13.3s
   ⠿ e6909a8e3739 Pull complete                                                                                                                 13.3s
   ⠿ 580e979e9d9f Pull complete                                                                                                                 13.7s
[+] Running 2/2
 ⠿ Network jenkins_default      Created                                                                                                          0.0s
 ⠿ Container jenkins-jenkins-1  Started                                                                                                          1.1s
 [root@cicd jenkins]# docker-compose ps
NAME                IMAGE                         COMMAND                  SERVICE             CREATED              STATUS              PORTS
jenkins-jenkins-1   docker.io/bitnami/jenkins:2   "/opt/bitnami/script…"   jenkins             About a minute ago   Up About a minute   8443/tcp, 50000/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp
Docker搭建Jenkins 实现自动部署教程 (用于远程访问其他服务器等)注意:首次访问远程服务器时,需要在jenkinsdocker容器内 输入命令ssh xxx.xxx.xxx.xxx 访问其他服务器授权成功后,jenkins才能无阻碍的访问其他服务器,否则jenkins执行脚本会访问失败被访问的服务器需要填入公钥注意:若jenkinsdocker运行,若id_rsa文件(ssh私钥)不存在需要将id_rsa文件生成在容器内的jenkins_home目录下,才会生效。 阅读详情

相关推荐

Jenkins+Docker+Git 自动化部署图文教程

前言: 通过几天的学习和自己的理解,整理了下Docker+Jenkins的自动部署教程,如有不足,还请多多指点,谢谢! Docker的优点: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优...

王小白来了 1万+

一、docker-compose方式安装运行Jenkins

docker-compose 编排容器方式安装,当然需提前安装docker-compose环境(见百度->docker-compose环境安装)

默金 2189

docker-compose轻松部署jenkins

docker-compose轻松部署jenkins

qq_48472816的博客 1814

一文搞懂jenkins安装部署Docker

一、简介: 本文主要记录如何通过docker安装jenkins,并通过jenkins部署项目,最终效果:在jenkins对某个项目点击构建,jenkins就会去gitLab上拉取最新项目的最新代码,然后根据pom.xml文件,把项目打包成jar,并自动把这个最新的jar运行起来,达到一键式构建的目标。二、操作步骤1)前提条件,首先需要安装jdk,maven,git。jdk安装,首先将安装包放入到服务器的/usr/local/src目录中,比例采用jdk-11.0.13_linux-x64_bin.tar版本

onePageKownAll的博客 8137

Docker-Jenkins|安装部署全流程

Docker-Jenkins|从安装到发布全流程,简单易上手

硬水果糖 1万+

docker快速部署jenkins

本文介绍了使用Docker部署Jenkins的简明步骤:首先创建并授权挂载目录/zero/jenkins,然后通过docker run命令启动Jenkins容器,配置端口映射、文件挂载和时区设置。部署完成后,可通过访问8080端口进入Jenkins,初始管理员密码位于挂载目录的secrets/initialAdminPassword文件中。整个过程简单高效,适合快速搭建Jenkins环境。

weixin_44556848的博客 699

Docker部署jenkins

使用Docker卷(自动管理权限)# 或手动创建主机目录(需设置权限)#授权文件夹# 启动Jenkins容器-d: 后台运行容器。--name: 容器名称。-p 8888:8080: 映射Web界面端口。-p 50099:50000: 供Jenkins Agent连接的端口。-v: 数据卷挂载,确保数据持久化。docker logs jenkins # 在日志中查找密码# 或直接从容器中读取。

feritylamb的博客 3628

jenkins+docker实现自动编译、打包、构建镜像、容器部署

一、整个持续集成、自动部署流程 开发push代码到gitlab,触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成后jenkins服务器上再执行SSH命令登录到部署服务器,docker从仓库(私服)拉取镜像,启动容器。整个操作流程完成。 二、服务器软件环境配置 由于条件所限,故只用...

FinelyYang的专栏 9万+

docker部署jenkins

docker部署jenkins 1.检查docker # docker version 2.yum更新 # yum update -y 3.yum查找jenkins # yum search jenkins 4.yum安装jenkins # yum install docker.io/jenkins/jenkins 5.docker启动 # docker run -it -d -p 80...

jinliang1star的博客 555

Linux中使用Docker部署Jenkins

"8099:8080" # ← 只改这里。user: root # ← 加这一行。# 进入docker中获取jenkins的密码。显示:没有权限,则看方法2;输出的密码后打开浏览器。

2301_81325634的博客 543

Docker 部署 Jenkins

1.docker安装Jenkins $ docker pull jenkins/jenkins $ mkdir /root/nn/jenkins_volume $ chmod 777 /root/nn/jenkins_volume $ docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -e JAVA_OPTS="-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai'"

lovely_nn的博客 2491

Docker部署Jenkins

以下命令创建并运行一个Jenkins容器,并将Jenkins的数据目录映射到宿主机的目录中。如果您打算在Jenkins中使用Docker,您需要安装并配置Docker Jenkins插件,并确保Jenkins用户有权访问Docker守护进程。根据您的具体需求,可能需要进行额外的配置和优化。使用解锁密码登录后,您可以安装推荐的插件,并进行必要的配置,如设置管理员账号和密码。如果您的服务器需要通过代理访问外网,您可能需要在Jenkins的配置中设置代理。为您的宿主机目录,用于持久化Jenkins数据。

ItContentShare 923

docker通过tomcat容器部署Jenkins

记录操作步骤。

m0_69265912的博客 1168

jenkins部署springboot+Docker项目

本文介绍了使用Jenkins自动化部署SpringBoot项目到Docker容器的完整流程。首先准备已安装DockerJenkins的服务器,在项目中添加Dockerfile文件配置容器环境。通过Jenkins新建任务,配置源码管理从Gitee拉取代码,设置构建步骤执行Maven打包、Docker镜像构建和容器运行命令。成功构建后验证容器运行状态、日志和部署结果。整个过程实现了SpringBoot项目的自动化容器化部署,提高了开发效率。

G_whang的博客 1142

dockerdocker-compose容器化部署Jenkins

超详细的Jenkins自动化部署Vue项目教程

andyLyysh的博客 2930
上一篇: vue打包至django集成运行中遇到的问题
_Marchen_
博客等级 码龄11年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值