在 Jenkins 服务器上运行 Shell 脚本以在目标服务器上运行 Docker 容器

在 Jenkins 服务器上运行 Shell 脚本,以在目标服务器上运行 Docker 容器,通常涉及使用 SSH 连接到目标服务器并执行 Docker 命令。以下是一个示例流程,展示如何在 Jenkins 中设置和执行这样的任务。

步骤 1: 准备 SSH 密钥

首先,确保 Jenkins 服务器可以通过 SSH 无密码登录到目标服务器。这通常涉及生成 SSH 密钥对,并将公钥添加到目标服务器的 ~/.ssh/authorized_keys 文件中。

步骤 2: 编写 Shell 脚本

在 Jenkins 工作区或某个源代码管理库中,创建一个 Shell 脚本(例如 run-docker-on-remote.sh),该脚本将通过 SSH 在目标服务器上执行 Docker 命令。

#!/bin/bash

# 目标服务器的 SSH 信息
REMOTE_USER="your-remote-username"
REMOTE_HOST="your-remote-host"
REMOTE_PORT="22" # 默认 SSH 端口,如有更改请指定

# Docker 镜像信息
DOCKER_IMAGE="your-harbor-repo/your-image-name:tag"
CONTAINER_NAME="your-container-name"

# SSH 命令,登录 Docker 仓库并运行容器
ssh -p $REMOTE_PORT ${REMOTE_USER}@${REMOTE_HOST} << EOF
  docker login your-harbor-url -u your-username -p \$PASSWORD
  docker pull $DOCKER_IMAGE
  docker run --name $CONTAINER_NAME $DOCKER_IMAGE
EOF

步骤 3: 在 Jenkins 中配置和运行脚本

  1. 在 Jenkins 中,导航到你的任务配置页面。
  2. 在 “构建” 部分,添加一个 “执行 shell” 构建步骤。
  3. 将你的 Shell 脚本内容粘贴到构建步骤的文本框中,或通过 “从源代码管理添加” 来引用脚本。
  4. 如果需要,配置任何必要的环境变量或参数。
  5. 保存配置并运行构建。

注意事项

  • 确保 Jenkins 服务器上的 SSH 密钥有正确的权限(通常是 600)。
  • 如果目标服务器的 SSH 端口不是默认的 22,需要在脚本中指定 REMOTE_PORT
  • PASSWORD 替换为实际的密码,或者使用 Jenkins 的凭据存储功能来安全地存储和引用密码。
  • 脚本中的 docker login 命令需要密码。考虑使用 Jenkins 的参数化构建或凭证插件来安全地传递密码。
  • 如果你的 Docker 镜像在公共仓库中,可能不需要 docker login 步骤。
  • 根据需要调整 Docker 容器的运行命令,包括端口映射、卷挂载等参数。

通过这种方式,你可以在 Jenkins 服务器上触发一个构建,该构建会运行一个 Shell 脚本,该脚本通过 SSH 在目标服务器上执行 Docker 命令,从而启动 Docker 容器。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值