[学习笔记]在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学习笔记7centos docker安装mysql

    2023-12-13 06:00:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 06:00:04       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 06:00:04       97 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 06:00:04       78 阅读
  4. Python语言-面向对象

    2023-12-13 06:00:04       88 阅读

热门阅读

  1. Node.js中的EventEmitter类介绍

    2023-12-13 06:00:04       67 阅读
  2. Ansible批量安装Zabbix-agnet客户端

    2023-12-13 06:00:04       54 阅读
  3. ARM(中断实验) 2023.12.12

    2023-12-13 06:00:04       56 阅读
  4. 对virsh dumpxml 文件的解释

    2023-12-13 06:00:04       60 阅读
  5. 使用ansible命令部署k8s集群

    2023-12-13 06:00:04       56 阅读
  6. FFmpeg之HWContextType

    2023-12-13 06:00:04       62 阅读
  7. ffmpeg编解码——时间基(time base)概念

    2023-12-13 06:00:04       56 阅读
  8. .NET6 RabbitMQ自动重连

    2023-12-13 06:00:04       55 阅读
  9. 使用elasticsearch-dump工具备份ES数据库

    2023-12-13 06:00:04       63 阅读
  10. Android & iOS - Android Studio/Xcode历史版本下载

    2023-12-13 06:00:04       59 阅读
  11. Flink之状态编程

    2023-12-13 06:00:04       47 阅读
  12. 实现CompletableFuture的返回数据,放入每个list中

    2023-12-13 06:00:04       55 阅读