Docker方式部署Jenkins

本文详细介绍了在Centos7.4上使用Docker-ce安装配置Jenkins的全过程,包括创建持久化目录、设置systemd服务文件实现开机自启、获取初始管理员密码等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备:

Centos 7.4

Docker-ce, Docker的安装方式就不说了

步骤:

1. 创建Nexus的持久化目录

useradd jenkins && mkdir -p /data/jenkins-data && chown -R jenkins /data/jenkins-data

2. 将服务文件添加到systemd中,这些就可以随系统一起启动了

#vi /etc/systemd/system/jenkins.service 

[Unit]
Description=Jenkins 1.22.0
Documentation=https://jenkins.io/zh/doc/book/installing/#setup-wizard
After=network.target docker.service
Requires=docker.service

[Service]
RestartSec=10
Restart=always

# Modify IP6_PREFIX to match network config

Environment="NAME=jenkins"
Environment="DATA_DIR=/data/jenkins-data"
Environment="IMG=jenkinsci/blueocean:1.22.0"
Environment="PORT=8080:8080/tcp"


# http://www.freedesktop.org/software/systemd/man/systemd.unit.html

# Clean-up bad state if still hanging around
#ExecStartPre=-/usr/bin/docker rm -f $NAME

# Attempt to pull new image for security updates
ExecStartPre=-/usr/bin/docker pull $IMG

# IPv6: Ensure forwarding is enabled on host's networking stack (hacky)
# Would be nice to use systemd-network on the host, but this doens't work
# http://lists.freedesktop.org/archives/systemd-devel/2015-June/032762.html
ExecStartPre=/bin/sh -c 'test -z "$IP6_PREFIX" && exit 0; sysctl net.ipv6.conf.all.forwarding=1'

# Main process
ExecStart=/usr/bin/docker run --rm -v ${DATA_DIR}:/var/jenkins_home  --name ${NAME} -p ${PORT} ${IMG}

# IPv6: Add static route for IPv6 after it starts up
ExecStartPost=/bin/sh -c 'test -z "${IP6_PREFIX}" && exit 0; sleep 1; ip route replace ${IP6_PREFIX} via $(docker inspect -f "{{ .NetworkSettings.GlobalIPv6Address }}" $NAME ) dev docker0'

# IPv6: Clean-up
ExecStopPost=/bin/sh -c 'test -z "$IP6_PREFIX" && exit 0; ip route del $IP6_PREFIX dev docker0'

[Install]
WantedBy=multi-user.target

3. 加入系统自启动并启动服务

systemctl daemon-reload && systemctl enable jenkins && systemctl start jenkins

4. 访问系统,第一次访问的用户名为:admin 密码在宿主机的:/data/jenkins-data/secrets/initialAdminPassword

5. 访问系统,http://10.128.12.12:8080/

<think>好的,用户想知道如何在Docker部署Jenkins的最佳实践。首先,我需要整理已有的信息。用户提供的引用中提到了使用LTS镜像、docker-compose配置、以及一些具体的命令。我需要把这些信息整合成一个步骤清晰的指南,同时确保符合用户的要求,比如使用正确的中文和LaTeX格式。 首先,我应该确定最佳实践的几个关键点:使用官方镜像、持久化数据、端口映射、健康检查、以及可能的优化措施。引用[1]提到了使用LTS镜像,这很重要,因为LTS版本更稳定。然后引用[3]中的docker-compose文件展示了如何配置数据卷、端口和健康检查。这些都是部署时需要注意的要点。 接下来,我需要分步骤说明部署过程。第一步是拉取镜像,使用docker pull命令。然后,创建必要的目录,比如/opt/jenkins/data,用于持久化Jenkins数据。使用docker-compose可以简化配置,避免每次手动输入长命令。在docker-compose.yml中定义volumes、ports、healthcheck等部分,确保容器重启策略为always,这样即使宿主机重启,容器也能自动恢复。 另外,用户可能需要知道如何访问Jenkins以及初始密码的位置。引用[3]中的volumes部分将Jenkins_home映射到宿主机,所以初始密码应该在该目录下的secrets/initialAdminPassword文件中。这部分需要明确写出,方便用户查找。 健康检查也是一个最佳实践,引用[3]中的healthcheck配置可以确保Jenkins服务正常运行。另外,挂载docker.sock是为了让Jenkins容器内能够使用宿主机的Docker,这在构建和部署应用时非常有用,如引用[2]所示。 最后,用户可能关心如何验证部署是否成功,所以需要说明访问8080端口以及查看日志的方法。优化建议部分,可以提到资源限制、备份策略和权限调整,这些都是实际使用中需要注意的地方。 在整理这些步骤时,要确保使用正确的格式,比如独立公式用$$...$$,行内变量用$...$,但根据用户提供的示例,似乎没有数学表达式,可能不需要太多LaTeX,但需要检查是否有需要的地方。例如,路径中的目录名可能需要用代码块,但用户示例中使用了代码块,所以应该正确使用代码块来展示命令和配置文件。 最后生成相关问题,需要围绕部署后的配置、持久化、优化和集成等方面提问,帮助用户进一步学习。</think>### 分步骤指南:在 Docker部署 Jenkins 的最佳实践 --- #### 1. **选择官方 LTS 镜像** 使用 Jenkins 官方提供的 LTS(长期支持版)镜像,确保稳定性与长期维护支持: ```bash docker pull jenkins/jenkins:lts ``` 引用[1]指出 LTS 版本更适合生产环境[^1]。 --- #### 2. **配置持久化存储** 通过挂载宿主机目录实现 Jenkins 数据持久化,避免容器重启后数据丢失: ```bash mkdir -p /opt/jenkins/data # 创建数据目录 ``` 在 `docker-compose.yml` 中定义挂载: ```yaml volumes: - /opt/jenkins/data:/var/jenkins_home # 关键数据持久化[^3] ``` --- #### 3. **编写 Docker Compose 文件** 使用 Docker Compose 定义容器配置,包含端口映射、健康检查等: ```yaml version: '3' services: jenkins: image: jenkins/jenkins:lts container_name: jenkins restart: always # 自动重启保证服务可用性 volumes: - /opt/jenkins/data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock # 允许容器内调用宿主机 Docker[^3] ports: - "8080:8080" # Web 界面端口 - "50000:50000" # Agent 通信端口 healthcheck: test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 | grep -q '200'"] interval: 1m timeout: 10s retries: 3 ``` 引用[3]展示了完整的 Compose 配置示例。 --- #### 4. **启动 Jenkins 容器** 执行以下命令启动服务: ```bash docker-compose -f /opt/jenkins/jenkins-compose.yml up -d ``` 验证容器状态: ```bash docker ps -f name=jenkins # 查看容器运行状态[^2] ``` --- #### 5. **获取初始管理员密码** 首次访问 `http://<宿主机IP>:8080` 需输入初始密码,通过以下命令获取: ```bash cat /opt/jenkins/data/secrets/initialAdminPassword ``` --- #### 6. **验证部署** - **访问 Web 界面**:通过 `8080` 端口完成初始化设置。 - **查看日志**:`docker logs jenkins` 检查启动是否正常。 --- ### 优化建议 1. **资源限制**:在 Compose 文件中添加 CPU/内存限制: ```yaml deploy: resources: limits: cpus: '2' memory: 4G ``` 2. **定期备份**:备份 `/opt/jenkins/data` 目录。 3. **权限调整**:确保挂载目录权限正确: ```bash chown -R 1000:1000 /opt/jenkins/data # Jenkins 用户默认 UID 1000 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值