Docker部署jenkins容器时,允许jenkins容器内部控制宿主机上的docker

 

-v /usr/bin/docker:/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock

-v /usr/bin/docker:/usr/bin/docker 是将宿主机的 Docker 可执行文件路径挂载到 Jenkins 容器中。这一挂载解决了 Jenkins 容器内无法直接调用 Docker 命令的问题,以下是具体原因和解释:

1. ​容器内调用 Docker 命令的需求

Jenkins 容器在执行构建任务时,可能需要调用 Docker 命令来构建或运行其他容器。例如,在 Jenkins 流水线中,您可能会使用 docker build 或 docker run 等命令。如果容器内没有 Docker 可执行文件,这些命令将无法执行。

2. ​Docker 可执行文件的挂载

通过 -v /usr/bin/docker:/usr/bin/docker,您将宿主机的 Docker 可执行文件挂载到容器中。这样,Jenkins 容器内就可以直接调用宿主机的 Docker 命令,而无需在容器内安装 Docker 客户端。

3. ​Docker 套接字的挂载

-v /var/run/docker.sock:/var/run/docker.sock 是将宿主机的 Docker 套接字挂载到容器中。这使得 Jenkins 容器能够与宿主机的 Docker 守护进程通信,从而执行 Docker 命令。然而,仅有套接字挂载是不够的,还需要 Docker 可执行文件来发起这些命令。

4. ​为什么需要两者结合

  • Docker 套接字:提供了与 Docker 守护进程通信的能力。
  • Docker 可执行文件:提供了发起 Docker 命令的能力。
    两者结合后,Jenkins 容器既能够与 Docker 守护进程通信,又能够发起 Docker 命令,从而实现完整的 Docker 功能。

在执行docker run命令时,是否加入-v /var/run/docker.sock:/var/run/docker.sock这个参数,会对容器中Jenkins的功能产生显著影响:

如果没有加入该参数: Jenkins容器将无法直接与宿主机上的Docker守护进程进行交互。这限制了Jenkins使用其插件(例如Docker Pipeline或依赖Docker的构建步骤)直接操控宿主机上的Docker。

如果加入了该参数: 通过-v /var/run/docker.sock:/var/run/docker.sock参数,宿主机上的Docker守护进程监听的Unix套接字文件被映射到Jenkins容器内。这样,Jenkins容器内的进程就能够与宿主机的Docker守护进程通信,执行启动、停止、构建和管理Docker容器等操作。这对于自动化CI/CD流程至关重要,比如在Jenkins中创建Docker镜像、运行Docker容器进行测试或将应用部署到Docker容器中。

简而言之,添加该卷挂载使得Jenkins能够实现更高级的容器化构建和部署自动化,而不添加则限制了Jenkins在容器内直接操作宿主机Docker环境的能力。

### Jenkins 使用指南与安装配置 #### 一、Jenkins 简介 Jenkins 是一个开源的持续集成和持续交付工具,能够自动化软件开发过程中的构建、测试和部署等任务。它支持多种插件扩展功能,适用于不同的开发环境和技术栈[^1]。 #### 二、Jenkins 安装步骤 以下是 Jenkins 在 Linux 系统上的安装方法: 1. **安装 JDK** Jenkins 需要 Java 环境支持,因此在安装 Jenkins 前需确保系统已安装 JDK。如果尚未安装 JDK,可以参考相关文档或使用以下命令进行安装: ```bash sudo yum install java-11-openjdk-devel -y ``` 安装完成后,可以通过以下命令验证 Java 是否成功安装: ```bash java -version ``` 2. **下载并安装 Jenkins** 下载 Jenkins 的 RPM 包并安装。以下为 CentOS 系统下的安装示例: ```bash wget https://repo.huaweicloud.com/jenkins/redhat-stable/jenkins-2.346.3-1.1.noarch.rpm sudo rpm -ivh jenkins-2.346.3-1.1.noarch.rpm ``` 此步骤会将 Jenkins 添加到系统的服务列表中[^3]。 3. **启动 Jenkins 服务** 安装完成后,使用以下命令启动 Jenkins 服务: ```bash sudo systemctl start jenkins ``` 并设置开机自启: ```bash sudo systemctl enable jenkins ``` 4. **访问 Jenkins Web 界面** 打开浏览器,访问 `http://<服务器IP>:8080`。首次访问需要输入初始管理员密码,该密码存储在 `/var/lib/jenkins/secrets/initialAdminPassword` 文件中: ```bash sudo cat /var/lib/jenkins/secrets/initialAdminPassword ``` #### 三、Jenkins 配置与使用 1. **安装推荐插件** 在初次启动Jenkins 会提示安装推荐插件。可以选择安装推荐插件或自定义插件以满足项目需求。 2. **创建第一个任务** 在 Jenkins 主界面中选择“新建任务”,输入任务名称并选择“自由风格项目”或“Pipeline”类型。根据项目需求配置构建触发器、源码管理、构建步骤等内容。 3. **配置 Node.js 和 npm** 如果项目依赖 Node.js 环境,可以通过以下方式配置: - 使用 Jenkins 的 NodeJS 插件安装和管理 Node.js 版本。 - 或者通过修改 systemd 服务文件或在 Pipeline 中显式设置环境变量来指定 Node.js 和 npm 的路径[^2]。 #### 四、常见问题解决 1. **无法启动 Jenkins 服务** 检查是否正确安装 JDK,并确保端口 8080 未被其他服务占用。 2. **Node.js 配置失败** 确保已正确安装 Node.js 和 npm,并在 Jenkins 中正确配置环境变量或使用 NodeJS 插件[^2]。 ```python # 示例:Jenkinsfile 中配置 Node.js 环境 pipeline { agent any environment { PATH = "/usr/local/bin:${PATH}" # 显式设置 Node.js 路径 } stages { stage('Build') { steps { sh 'node --version' sh 'npm --version' sh 'npm install' } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值