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

相关推荐
泡沫冰@4 小时前
使用Jenkins时的常见问题以及Podman容器+Jenkins流水线落地方案
jenkins
风曦Kisaki8 小时前
#企业级docker私有仓库构建:harbor仓库与阿里云镜像仓库
阿里云·docker·容器
期待着20138 小时前
docker 安装 ,在centos7.9
运维·docker·容器
骑上单车去旅行11 小时前
Docker Compose 命令完全指南:从构建到运维
docker·容器·eureka
spider_xcxc12 小时前
K8s 部署学习笔记
docker·容器·kubernetes·云计算·k8s
java_logo12 小时前
Docker Compose 部署 Apache Superset:轻松搭建开源 BI 平台
docker·开源·apache·superset·轩辕镜像·superset部署方案·docker superset
zy happy12 小时前
VMware虚拟机添加新的硬盘
java·linux·jvm·docker
X1A0RAN13 小时前
Jenkins 插件管理与备份方案
jenkins
IT瑞先生1 天前
docker-compose下快速部署实操——持续更新...
运维·docker·容器
爱码少年1 天前
Docker遍历镜像生成导出镜像命令六法
docker·shell