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

文章目录

原理:

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吧

相关推荐
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心2 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing2 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
guo_wen_qiang2 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特2 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe2 天前
docker常见命令
docker
正经教主2 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿2 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
不吃香菜kkk、2 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
Zhu7582 天前
docker环境,vLLM 部署 Qwen3.8-27B
docker·qwen·vllm