通过Docker安装Jenkins

 

创建一个目录,用来存在Jenkins的数据

mkdir -p /dockerData/jenkins/jenkins-data
 

进入到/dockerData/jenkins 目录,我们在这创建Dockerfile

cd /dockerData/jenkins
vim Dockerfile
 

复制以下内容到文件Dockerfile 中

FROM jenkins/jenkins:2.375.1
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
RUN jenkins-plugin-cli --plugins "blueocean:1.26.0 docker-workflow:563.vd5d2e5c4007f"
 

从Dockerfile中构建镜像

docker build -t myjenkins-blueocean:2.375.1-1 .
 

构建完成之后,使用docker images可以看到刚刚构建的镜像。

运行一个Jenkins容器

docker run \
  -u root \
  --name jenkins \
  --restart=on-failure \
  --detach \
  --publish 8080:8080 \
  --publish 50000:50000 \
  --volume /etc/localtime:/etc/localtime \
  --volume /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
  --volume /dockerData/jenkins/jenkins-data:/var/jenkins_home \
  myjenkins-blueocean:2.375.1-1
 

对当中的一些参数进行解释:

  • -u root 容器中的进程以root用户权限运行
  • --restart=on-failure如果容器由于错误而退出,则将其重新启动
  • --detach 保持容器在后台持续运行
  • --publish 8080:8080 映射宿主机8080端口给容器8080端口
  • --publish 50000:50000映射宿主机50000端口给容器50000端口
  • --volume /etc/localtime:/etc/localtime 容器时间如何与宿主机同步
  • --volume /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker 挂载宿主机的/var/run/docker.sock 给容器,这样Jenkins容器就可以调用宿主机的docker,创建其他的容器服务于CICD
  • --volume /dockerData/jenkins/jenkins-data:/var/jenkins_home 挂载Jenkins容器的数据到宿主机目录下

 

docker run -dt --name jenkins -p 8390:8080 -p 50000:50000 --privileged=true \
-v /vdc/data/jenkins:/var/jenkins_home \
-v /vdc/data/maven/apache-maven-3.9.2:/usr/local/maven \
-v /usr/local/java/jdk-17.0.9:/usr/local/jdk \
-v /vdb/server/pay/config:/vdb/server/pay/config \
-v /vdc/data/ftp_data/trace:/vdc/data/ftp_data/trace \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins:lts

该命令用于启动一个名为 jenkins 的 Docker 容器,并进行了一系列配置。以下是命令的详细解释:
docker run: 用于启动一个新的容器。
-d: 后台运行容器(detached 模式)。
-t: 分配一个伪终端(通常与 -i 一起使用,这里单独使用 -t 可能是为了确保TTY分配)。
--name jenkins: 为容器指定名称为 jenkins。
-p 8390:8080: 将主机的 8390 端口映射到容器的 8080 端口,这是 Jenkins 的 Web UI 默认端口。
-p 50000:50000: 将主机的 50000 端口映射到容器的 50000 端口,这是 Jenkins 用于远程执行器连接的端口。
--privileged=true: 给予容器扩展权限,允许其执行一些特权操作,例如访问主机设备等。
-v /vdc/data/jenkins:/var/jenkins_home: 将主机的 /vdc/data/jenkins 目录挂载到容器的 /var/jenkins_home 目录,这是 Jenkins 的主目录,用于存储配置、插件和构建历史等数据。
-v /vdc/data/maven/apache-maven-3.9.2:/usr/local/maven: 将主机上的 Maven 安装目录挂载到容器中,以便在容器内可以直接使用该版本的 Maven。
-v /usr/local/java/jdk-17.0.9:/usr/local/jdk: 将主机上的 JDK 安装目录挂载到容器中,以便在容器内可以直接使用该版本的 JDK。
-v /vdb/server/pay/config:/vdb/server/pay/config: 将主机的支付服务配置目录挂载到容器中,可能是为了某些特定的构建或测试任务。
-v /vdc/data/ftp_data/trace:/vdc/data/ftp_data/trace: 将主机的 FTP 数据跟踪目录挂载到容器中,可能是为了日志或其他数据处理需求。
-v /var/run/docker.sock:/var/run/docker.sock: 将主机的 Docker 套接字文件挂载到容器中,使得容器内的进程可以与主机的 Docker 守护进程通信,从而管理主机上的 Docker 资源。
-v /usr/bin/docker:/usr/bin/docker: 将主机的 Docker 可执行文件挂载到容器中,使得容器内可以直接调用 Docker 命令。
jenkins/jenkins:lts: 使用 Jenkins 的长期支持版(LTS)镜像。

 

posted @   人生の短暂  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示