Docker 环境搭建时怎么在持续集成(CI)服务器上配置 Docker

舞夢輝影

舞夢輝影

2026-08-04

831人浏览

原创

docker-in-docker(dind)指在docker容器内运行docker守护进程,用于ci/cd中提供隔离、并行、可重现的构建环境;需以--privileged模式运行docker:dind镜像,并注意安全与性能权衡。

docker 环境搭建时怎么在持续集成(ci)服务器上配置 docker

在 CI 服务器上配置 Docker,核心是让 Jenkins 或其他 CI 工具能安全、稳定地调用 Docker CLI 和守护进程,完成构建镜像、运行测试容器等操作。这不是简单装个 Docker 就完事,关键在于权限、路径和上下文隔离。

确保 Docker 守护进程已就绪并可被 CI 进程访问

Docker 守护进程(dockerd)必须运行在 CI 服务器上,且 CI 工具(如 Jenkins)启动的构建任务需能与之通信。默认通过 Unix socket /var/run/docker.sock 交互:

  • 确认 docker 服务已启动:systemctl is-active docker 应返回 active
  • Jenkins 默认以 jenkins 用户运行,该用户需加入 docker 用户组:sudo usermod -aG docker jenkins
  • 重启 Jenkins 使组权限生效:sudo systemctl restart jenkins
  • 避免使用 root 用户运行 Jenkins,也不建议直接挂载 --privileged,最小权限原则更安全

在 Jenkins 容器中启用 Docker 支持(推荐方式)

若 Jenkins 本身运行在 Docker 容器中(如 jenkins/jenkins:lts),需将宿主机的 Docker socket 和 CLI 工具透传进去:

Docker Desktop
Docker Desktop

Docker Desktop 可用于构建容器化 PHP 开发环境,适合 Laravel、Symfony、WordPress 等项目统一运行依赖。

下载
  • 启动 Jenkins 容器时挂载 socket:-v /var/run/docker.sock:/var/run/docker.sock
  • 同时挂载 Docker CLI 二进制文件(避免“docker: command not found”):-v $(which docker):/usr/bin/docker
  • 确保容器内用户有权限访问 socket,通常需设置 user: "1001:1001" 或对应 UID/GID
  • 验证方式:进入 Jenkins 容器执行 docker info,应能正常输出 daemon 信息

处理构建环境中的 Docker-in-Docker(DinD)场景

某些 CI 场景要求完全隔离的 Docker 环境(如多项目并发构建互不干扰),此时可启用 Docker-in-Docker 模式:

  • 使用官方 docker:dind 镜像作为 sidecar 容器或构建节点
  • 必须启用 --privileged 或添加必要 capabilities:--cap-add=SYS_ADMIN --cap-add=NET_ADMIN
  • DinD 启动后需等待 dockerd 就绪(例如用 wait-for-it.sh 或循环检查 docker ps
  • 注意 DinD 的镜像层不共享宿主机 cache,构建速度略慢,适合强隔离需求而非日常推荐

验证与常见问题排查

配置完成后,应在实际 Pipeline 中快速验证是否真正可用:

  • 写一段最简 Pipeline:sh 'docker --version && docker run --rm hello-world'
  • 若报错 Cannot connect to the Docker daemon,检查 socket 路径挂载是否正确、用户组是否生效
  • 若报错 permission denied while trying to connect to the Docker daemon socket,确认 jenkins 用户已加入 docker 组且未因 shell 会话缓存旧组信息
  • CI 服务器若为云厂商实例(如 AWS EC2、阿里云 ECS),还需确认安全组/防火墙未拦截本地 socket 访问(一般不影响)

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker jenkins docker部署

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

335

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

616

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1170

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

406

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1005

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1776

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

320

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习