[学习笔记]在CentOS7中用Docker方式安装Jenkins

本文介绍了如何在Jenkins构建环境中使用Docker-in-Docker(DinD)技术,包括创建网桥网络、安装DinD、创建镜像、运行容器,并配置TLS和端口转发。

原理:

Docker in Docker (以下简称 DinD)可以在 Container 中直接运行一个 Docker Daemon ,然后使用 Container 中的 Docker CLI 工具操作容器。其原理如下图

在这里插入图片描述

容器内的Docker Daemon对外提供服务,每个运行中的容器,都是一个进程,这个进程都托管在Docker Daemon中,镜像和容器都在一个隔离的环境。

Jenkins在构建时,需要一个独立的Docker环境用于打包镜像。需要用到DinD技术。

创建Docker网桥网络

网桥允许连接到同一网桥网络的容器进行通信,创建一个名为jenkins的网桥网络

docker network create jenkins

安装DinD

这里使用官方文档的方式安装DinD

docker run --name jenkins-docker --rm --detach \
  --privileged --network jenkins --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind --storage-driver overlay2
  • –env DOCKER_TLS_CERTDIR=/certs: 允许在 Docker 服务器中使用 TLS, 统一管理 Docker TLS 证书的根目录
  • –volume jenkins-docker-certs:/certs/client: 映射 Docker TLS 证书的根目录
  • –volume jenkins-data:/var/jenkins_home: 映射jenkins_home目录
  • –publish 2376:2376:在主机上公开 Docker 守护程序端口

创建镜像

在合适位置创建一个Dockerfile文件,内容如下:

FROM jenkins/jenkins:2.426.1-jdk17
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
  https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
  https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins

构建镜像

docker build -t myjenkins .

构建成功后可在镜像列表中看到myjenkins镜像

在这里插入图片描述

运行容器


docker run \
  --name jenkins \
  --restart=on-failure \
  --detach \
  --network jenkins \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  myjenkins
  

注意环境变量路径,以及映射目录的路径要与DinD中的环境变量保持一致。

通过docker ps查看容器运行状态

在这里插入图片描述

配置端口转发到8080

server {
    listen 2901;
    server_name your.server.cn;

    location / {
        proxy_pass http://127.0.0.1:8080/;
        
    }
}

重启nginx

systemctl restart nginx

安装完成,打开服务器地址后,按照提示配置Jenkins吧

在这里插入图片描述

### 使用 DockerCentOS 7安装和配置 Jenkins #### 准备工作 在开始之前,确保已经正确安装并运行了 DockerDocker Compose。如果尚未完成此操作,请先按照官方文档或相关教程完成安装。 --- #### 配置步骤 1. **拉取 Jenkins 官方镜像** 执行以下命令来下载最新的 Jenkins LTS 版本镜像: ```bash docker pull jenkins/jenkins:lts ``` 2. **创建必要的目录结构** 创建用于存储 Jenkins 数据的本地目录,并设置权限以便容器可以访问这些数据。 ```bash mkdir -p /mydata/jenkins_home chmod 777 /mydata/jenkins_home ``` 3. **编写 `docker-compose.yml` 文件** 在 `/mydata/` 下新建一个名为 `docker-compose.yml` 的文件,内容如下: ```yaml version: '3' services: jenkins: image: jenkins/jenkins:lts container_name: jenkins restart: always user: root ports: - 8080:8080 - 50000:50000 volumes: - /mydata/jenkins_home:/var/jenkins_home - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker ``` 此处挂载了多个卷以支持完整的功能需求[^2]。 4. **启动 Jenkins 容器** 切换到 `docker-compose.yml` 文件所在路径,执行以下命令启动服务: ```bash docker-compose up -d ``` 5. **查看初始管理员密码** 启动完成后,可以通过以下命令获取初始管理员密码: ```bash docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword ``` 将返回的结果作为登录凭证,在浏览器中输入地址 `http://<服务器IP>:8080` 并按提示完成初始化过程[^3]。 6. **可选:配置 Maven 国内源** 如果项目依赖于 Maven 构建工具,则可以在 Jenkins 中指定自定义的 Maven 设置文件。例如编辑 `${WORKSPACE}/settings.xml` 添加阿里云 Maven 源: ```xml <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors> ``` 然后将其挂载至容器内部相应位置[^5]。 7. **验证 JDK 环境** 确认宿主机已安装 Java 开发套件 (JDK),并通过 `-v` 参数共享给容器使用。如果没有预设环境变量 `$JAVA_HOME` ,则需手动调整全局配置或者脚本逻辑。 --- #### 注意事项 - 若计划频繁调用 Docker CLI 命令(如构建镜像),务必映射 `/var/run/docker.sock` 及实际二进制程序路径;否则可能导致插件报错无法识别外部资源。 - 对于生产环境中敏感信息保护建议启用 HTTPS 加密传输以及身份认证机制进一步加固安全性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林晓lx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值