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

相关推荐
lichenyang45312 小时前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang45312 小时前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang45313 小时前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang45313 小时前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy6 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭6 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩7 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵7 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1117 天前
LM Studio Docker 部署——本地大模型一键启动
docker