[学习笔记]在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吧

相关推荐
帽儿山的枪手1 小时前
程序员必掌握的docker命令
docker·容器·kubernetes
重生之我是cxk1 小时前
docker多架构镜像构建
docker·容器·架构
半吊子的程序狗2 小时前
docker测试镜像源
运维·docker·容器
XDIGAS3 小时前
Dockerfile项目实战-单阶段构建Vue2项目
docker·容器·centos·node.js·vue
知远同学3 小时前
Docker学习笔记-docker安装、删除
笔记·学习·docker
码--到成功3 小时前
向量数据库Qdrant 安装 不使用docker
运维·docker·容器
AmazingKO3 小时前
制作像素风《饥荒》类游戏的整体蓝图和流程
人工智能·python·游戏·docker·visual studio code·竹相左边
m0_731187887 小时前
docker compose搭建博客wordpress
docker·容器·eureka
jessezappy7 小时前
记录:安装 Docker Desktop 时直接设置安装路径及容器存储路径
docker·dify·anythingllm·ollama·本地知识库·ragflow·deepseek
锋丷7 小时前
Docker安装 (centos)
docker·容器·centos