---
schema_version: "1"
id: f8c458be51713ec0a0895957474c2706c4e177c41552151a165b2bcd4e164f6c
title: 为容器安装 Linux 版 Bridge
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/online/to_bridge_linux_install.md
canonical_url: https://help.tableau.com/current/online/zh-cn/to_bridge_linux_install.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 629c0054b7b40bbe7f0ccbd00819c1202845763d295c53ccb9d00ace8c3c7ecc
description: Install Tableau Bridge for Linux in a Docker container.
---
[跳转到主要内容](#main-content)

# 为容器安装 Linux 版 Bridge

Linux 版 Bridge 提供容器化工作负载的可扩展性和简化的管理功能。以下说明描述了运行适用于 Linux 版 Bridge 的轻量级方法，并假设您具有 Docker 的基本知识并了解生态系统中使用的关键术语。

## 从 Docker 容器安装并运行 Bridge

若要在 Linux 上使用 Bridge，您必须创建自定义 Docker 映像，安装 RPM 包，然后从容器映像内部运行 Bridge。

安装说明：

- 您可以在一台计算机上部署多个 Linux 版 Bridge 容器。
- 不支持具有动态 IP 的无服务器解决方案。
- 不支持 Bridge 旧版计划。有关详细信息，请参见[从 Bridge（旧版）计划迁移到 Online 计划](https://help.tableau.com/current/online/zh-cn/to_sync_schedule.htm)。

### 先决条件

- 安装了 Docker 引擎。对于 docker 容器的基础映像，Linux 版 Bridge 在以下操作系统上受支持：
    
    - Amazon Linux 2023
    - Red Hat Enterprise Linux 8
    - Red Hat Enterpirse Linux 9
    
    **注意**：不支持 CentOS。
- 从 Tableau 网站上的[下载](https://www.tableau.com/zh-cn/support/releases/bridge)页面下载最新的 Tableau Bridge RPM 软件包。
- 有 Linux 操作系统经验。
- 基本的 shell 脚本编写。
- Docker 经验。
- Tableau 站点管理员[个人访问令牌](https://help.tableau.com/current/online/zh-cn/security_personal_access_tokens.htm) (PAT) 或[统一访问令牌](https://help.tableau.com/current/api/cloud-manager/zh-cn/docs/unified_access_tokens.html) (UAT)。您必须为每个 Bridge 客户端使用专用的 PAT 或 UAT。Tableau 支持每个用户 104 个 PAT 令牌。
- 如果您的 Bridge 主机将连接到远程共享，则需要在 Docker 文件中为 UNC 映射创建一个部分。请参见[连接到平面文件和基于文件的数据提取](https://help.tableau.com/current/online/zh-cn/to_sync_local_data.htm#remote-share)。
- Linux 版 Bridge 不支持 Bridge（旧版计划）。请参见[从 Bridge（旧版）计划迁移到 Online 计划](https://help.tableau.com/current/online/zh-cn/%3Chttps://help.tableau.com/current/online/zh-cn/to_sync_schedule.htm#Migrate from Bridge \(legacy\) to Online schedules>)。

### 步骤 1：创建 Bridge 容器映像

以下步骤是构建 Linux 版 Bridge 基础映像上的基本说明。有关详细信息，请参见 [Docker 概述](https://docs.docker.com/get-started/overview/)。[](https://docs.docker.com/get-started/overview/)

安装 Docker 后，唯一有权运行命令的用户是 root。您可以使用 `sudo` 运行 Docker 命令，也可以由 Docker 组的成员运行。

**重要信息**：基础映像将根据不同的驱动程序和平台而有所不同。以下示例旨在说明构建基础映像的过程。您必须针对特定环境调整构建过程。

1. 从 Tableau 网站上的[下载](https://www.tableau.com/zh-cn/support/releases/bridge)页面下载 Bridge `.rpm` 包。
2. （可选）您可以编辑配置设置以更改客户端的运行方式。有关详细信息，请参见更改 [Bridge 客户端设置](https://help.tableau.com/current/online/zh-cn/to_sync_change_computer_site.htm)。
3. 创建工作目录并将 `.rpm` 包移入目录中。
    
    `cd ~`
    
    `$ mkdir Docker`
    
    `$ cd Docker`
    
    `$ mv <RPM_location>.rpm .`
4. 在工作目录中创建 Docker 文件。例如：
    
    `$ touch Dockerfile`
5. 编辑 Docker 文件并添加用于运行 `yum update.` 的命令
    
    **Red Hat 示例**
    
    对于 Red Hat 8：
    
    `FROM registry.access.redhat.com/ubi8/ubi:latest`
    
    `RUN yum -y update`
6. 编辑 Docker 文件，然后输入命令从映像中复制、安装和移除 Bridge RPM 软件包：
    
    - **选项 1**：使用 `--mount`，例如：
        
        FROM registry.access.redhat.com/ubi8/ubi:latest
        RUN --mount=type=bind,source=<your\_bridge\_rpm>.rpm,target=/tmp/bridge.rpm \\
         set -eux; \\
         yum -y update; \\
         ACCEPT\_EULA=y yum install -y /tmp/bridge.rpm; \\
         yum -y clean all; \\
         rm -rf /var/cache/yum
    - **选项 2**：直接下载 rpm>，例如：
        
        FROM registry.access.redhat.com/ubi8/ubi:latest
        RUN set -eux; \\
         yum -y update; \\
         curl -fsSL https://repo.example.com/bridge.rpm -o /tmp/bridge.rpm; \\
         ACCEPT\_EULA=y yum install -y /tmp/bridge.rpm; \\
         rm -f /tmp/bridge.rpm; \\
         yum -y clean all; \\
         rm -rf /var/cache/yum
7. 使用 `docker` build 命令构建新的容器映像。
    
    例如，以下命令在当前目录中构建一个映像，并用单词 `​"bridge_base"` 标记它。
    
    `docker buildx build --platform=linux/amd64 -t bridge_base .`
8. 检查您创建的基础映像是否显示在映像列表中：
    
    `docker images | grep bridge`

### 步骤 2：安装驱动程序

Bridge 客户端需要驱动程序来促进专用网络数据和 Tableau Cloud 之间的连接。对于驱动程序，请转至[驱动程序下载](https://www.tableau.com/zh-cn/support/drivers)，选择数据源，然后选择“Linux”作为操作系统。

1. 可以在启动基础映像后以交互方式完成安装，也可以将单独的 Dockerfile 编写为基础映像之上的一层。
    
    **示例**
    
    将 MySQL 驱动程序 RPM 复制到该目录后，您可以使用以下 Dockerfile 创建一个单独的工作目录，用于对 MySQL 驱动程序进行分层：
    
    `# Using previously built bridge_base image`
    
    `FROM bridge_base`
    
    `COPY mysql-connector-odbc-8.0.26-1.el8.x86_64.rpm`
    
    `RUN yum install -y mysql-connector-odbc-8.0.26-1.el8.x86_64.rpm`
    
    **注意：**MySQL 和 Amazon Aurora MySQL 驱动程序的要求是配置区域设置并在映像中安装语言包：  
    示例：  
    `RUN yum install -y glibc-langpack-en`  
    `ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8`
    
    **示例**
    
    安装 postgres JDBC 驱动程序。此操作也可以在单独的 Dockerfile 中完成。
    
    `# Using previously built bridge_base image`
    
    `FROM bridge_base`
    
    `COPY postgresql-42.3.3.jar /opt/tableau/tableau_driver/jdbc/`
    
    **示例**
    
    安装 Amazon Redshift 驱动程序。
    
    `# Using previously built bridge_base image`
    
    `FROM bridge_base`
    
    `yum install -y unixODBC`
    
    `yum --nogpgcheck localinstall -y`
    
    `AmazonRedshiftODBC-64-bit-2.1.7.0.x86_64.rpm`
    
    `odbcinst -i -d -f /opt/amazon/redshiftodbcx64/odbcinst.ini`
2. 创建新映像：

`docker image build -t bridge_final .`

`bridge_final` 映像使用上一步中的缓存映像，并自动为所有 Bridge 实例安装驱动程序。如果您有映像存储库，则可以将映像发布到存储库并将映像分发到要运行 Bridge 的所有计算机。

### 步骤 3：安装语言包并在 Docker 中设置区域设置

1. 在 Docker 容器中安装语言包：
    
    `RUN yum install -y glibc-langpack-en`
2. 使用 `ENV LC_ALL en_US.UTF-8` 在 Docker 中设置区域设置。您还可以通过将以下内容添加到 `/etc/profile` 文件来设置区域设置:
    
    `export LANG="en_US.utf8"`
    
    `export LANGUAGE="en_US.utf8"`
    
    `export LC_ALL="en_US.utf8"`

### 步骤 4：运行 Bridge 容器

现在您已经构建了基础映像，可以使用多种方法部署它。基本步骤包括：

1. 创建令牌
2. 启动 Bridge 容器的实例。
3. 将代理分配到池。

#### 创建令牌

在开始部署容器之前，请创建[个人访问令牌](https://help.tableau.com/current/online/zh-cn/security_personal_access_tokens.htm) (PAT) 或[统一访问令牌](https://help.tableau.com/current/api/cloud-manager/zh-cn/docs/unified_access_tokens.html) (UAT)。登录到代理需要 PAT 或 UAT。

**注意事项和要求**：

- Tableau Cloud 支持每个用户 104 个 PAT。我们建议每个客户端使用一个 PAT 或 UAT。
- 以下令牌名称必须匹配：`patTokenId` 或 `jwTokenFile` （运行 `run-bridge.sh` 命令时使用）、JSON 文件中的令牌名称，以及生成令牌时指定的令牌名称。
- 如果使用 UAT，则必须包括所需的 Oauth 范围：`"tableau:remote_agents:*"`、`"tableau: jobs:read"`、`"tableau:file_uploads:*"`、 `"tableau:datasources:*"`

#### 启动实例

此过程中的交互式方法说明了启动工作线程所需的步骤。当您退出时，容器停止运行。

- 以 `root` 用户身份运行此命令，移动到容器的 shell 提示符：
    
    `docker container run -it bridge_final /bin/bash`

其余命令在容器的此交互式会话的上下文中执行。

1. 将 PAT 或 UAT 令牌添加到 JSON 格式的平面文件中。例如：`/home/jSmith/Documents/MyTokenFile.txt`
2. 令牌语法示例：
    
    `{"MyToken" : "uLICC7e8SUS8ZNGe8RIFn4u==:lRihmYHI0XBKle7e8S4uSORXGqAkAl4"}`
3. 更改文件权限以限制当前用户的访问。例如：`chmod 600 MyTokenFile.txt`
4. 通过运行 `run-bridge.sh` 命令，启动 Bridge 容器的实例。该过程因您使用的令牌类型而异：
    
    **PAT 命令示例**
    
    /opt/tableau/tableau\_bridge/bin/run-bridge.sh -e --patTokenId="Mytoken" --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --patTokenFile="/home/jSmith/Documents/MyTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"
    
    **UAT 命令示例**
    
    /opt/tableau/tableau\_bridge/bin/run-bridge.sh -e --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --jwTokenFile="jwTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"
    
    run-bridge.sh 参数
    
    <table style="border-left-style: solid;border-left-width: 1px;border-left-color: #bbb;border-right-style: solid;border-right-width: 1px;border-right-color: #bbb;border-top-style: solid;border-top-width: 1px;border-top-color: #bbb;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #bbb;" class="simple-table"><colgroup><col style="width: 129px;"><col></colgroup><tbody><tr><th colspan="2"><strong>全局参数</strong></th></tr><tr><td><code>--client</code></td><td>（必需）您想要为工作线程指定的名称。</td></tr><tr><td><code>--site</code></td><td>（必需）显示在 URI 中的站点名称。不要包含 URI 路径。</td></tr><tr><td><code>--userEmail</code></td><td>（必需）与令牌关联的用户电子邮件。</td></tr><tr><td><code>-e</code></td><td>（可选）默认情况下，Bridge 客户端工作线程作为后台服务运行。若要在前台运行工作线程，请包含 -e 参数。</td></tr><tr><td><code>--poolId</code></td><td>（可选）分配给客户端的池 ID。请参见<a href="#UsingPoolID" class="xref">使用池 ID</a>。</td></tr></tbody></table>
    
    <table style="border-left-style: solid;border-left-width: 1px;border-left-color: #bbb;border-right-style: solid;border-right-width: 1px;border-right-color: #bbb;border-top-style: solid;border-top-width: 1px;border-top-color: #bbb;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #bbb;" class="simple-table"><colgroup><col style="width: 129px;"><col></colgroup><tbody><tr><th colspan="2"><strong>PAT：必需参数</strong></th></tr><tr><td><code>--patTokenId</code></td><td>PAT 的 ID。有关详细信息，请参见<a href="https://help.tableau.com/current/online/zh-cn/security_personal_access_tokens.htm">个人访问令牌</a>。</td></tr><tr><td><code>--patTokenFile</code></td><td>PAT 文本文件的文件名和路径。</td></tr></tbody></table>
    
    <table style="border-left-style: solid;border-left-width: 1px;border-left-color: #bbb;border-right-style: solid;border-right-width: 1px;border-right-color: #bbb;border-top-style: solid;border-top-width: 1px;border-top-color: #bbb;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #bbb;" class="simple-table"><colgroup><col style="width: 129px;"><col></colgroup><tbody><tr><th colspan="2"><strong>UAT：必需参数</strong></th></tr><tr><td><code>--jwTokenFile</code></td><td>UAT 文本文件的文件名和路径。</td></tr></tbody></table>

**注意**：如果您正在安装旧版本的 Linux 版 Bridge，则必须运行不同的命令来启动工作线程。对于 2024.2 及更低版本，使用 `TabBridgeClientWorker` 命令（而不是 `run-bridge.sh` 命令）启动工作线程。所有命令选项都是相同的。

**代理已启动**

以下消息表明代理已启动。`“Service started: ...”`

**停止工作线程**

使用 `Control-C` 停止工作线程。您可以为容器映像启动一个新的工作线程，而不是重新启动工作线程。

#### 默认池分配

如果您没有使用命令选项 `--poolId` 分配池，则将客户端分配到默认池。如果您想要将客户端与特定域或 VConns 一起使用，您可以使用 UI 将客户端分配到命名池。Tableau Cloud“主页”\>“设置”\>“Bridge”上的菜单。有关详细信息，请参见[配置 Bridge 客户端池](https://help.tableau.com/current/online/zh-cn/to_enable_bridge_live_connections.htm)。

#### 使用池 ID

使用 `run-bridge.sh` 命令启动 Bridge 工作线程时，`poolId` 是可选的。但是，客户端的行为取决于客户端是否注册到站点以及客户端是否分配到池。Tableau Bridge 在任何给定时间只能连接或注册到一个 Tableau Cloud 站点。当您注销并重新登录时，客户端将注册到站点。

**如果未提供池 ID**

- 如果 Bridge 客户端已经注册，则客户端状态保持不变：
    - 如果客户端已分配给某个池，则它仍然分配给该池，无论它是指定池还是默认池。
    - 如果客户端未分配到池，它将保持未分配状态。
- 如果 Bridge 客户端是新的（您从未登录到 Tableau Cloud），则该客户端将分配到默认池。

**如果提供了池 ID**

- 如果提供了池 ID 并且正确，则将 Bridge 客户端分配给指定池。
- 如果提供了池 ID 且不正确：
    - 如果 Bridge 客户端未注册，则会将客户端分配到默认池。
    - 如果 Bridge 客户端已注册，则客户端状态保持不变，无论是指定池、默认池还是未分配。

#### 查找池 ID

若要查找池 ID，请转至“设置”\>“Bridge”页面，然后单击池的名称。例如：

![](/tableau/current/zh-cn/online/zh-cn/Img/bridge_pool_id.png)

## 升级 Linux 版 Bridge 客户端

与 Bridge 的最新版本保持同步可确保您可以利用 Bridge 客户端的每个新版本附带的最新功能和修复。

您不能为容器运行就地升级。相反，您必须使用最新的 Bridge 二进制文件构建新的容器映像，然后将 Bridge 客户端与以前的版本并排添加到池中。验证功能后，您随后移除了之前的 Bridge 客户端。请按以下步骤操作：

1. 按照上文所述安装并配置新的 Tableau Bridge 客户端。
2. 将新的 Bridge 客户端添加到相关池。请参见[配置池](https://help.tableau.com/current/online/zh-cn/to_enable_bridge_live_connections.htm)。
3. 在继续下一步之前，请监控 Bridge 作业的运行状况以验证稳定性。
4. 从池中移除之前的 Bridge 客户端。打开池，找到要移除的客户端计算机，然后单击**“删除”**。
5. 等待 Bridge 客户端上的数据提取刷新超时过程完成。默认超时为 24 小时。有关详细信息，请参见[dataSourceRefreshSettings](https://help.tableau.com/current/online/zh-cn/to_sync_change_computer_site.htm#dataSourceRefreshSettings)。
6. 刷新超时期限过后，您可以移除 Bridge 客户端的先前实例。

## 疑难解答

### 安装旧版本

如果您正在安装旧版本的 Linux 版 Bridge，则必须运行不同的命令来启动工作线程。对于 2024.2 及更低版本，使用 `TabBridgeClientWorker` 命令（而不是 `run-bridge.sh` 命令）启动工作线程。

所有命令选项与上面[步骤 4：运行 Bridge 容器](#runBridgeContainer)中记录的相同。

例如： 

/opt/tableau/tableau\_bridge/bin/TabBridgeClientWorker -e --patTokenId="Mytoken" --userEmail="admin@tableau.com" --client="myBridgeAgent" --site="mySite" --patTokenFile="/home/jSmith/Documents/MyTokenFile.txt" --poolId="1091bfe4-604d-402a-b41c-29ae4b85ec94"

### 工作线程启动错误

在某些情况下，运行 `run-bridge.sh` 命令后会出现以下错误：

`Missing log in parameters. Aborting the attempt to start service worker.`

在大多数情况下，使用原始选项和 `-e` 选项重新运行命令可修复该问题。`-e` 选项在前台运行 Bridge 工作线程服务。

如果在后台模式下运行 Bridge 客户端，并且看到启动错误，请验证所有输入参数是否包括任何所需文件的路径。例如，在后台模式下，不会提供用户上下文来解析令牌文件的路径。

### 使用日志文件

日志文件存储在用户的 `My_Tableau_Bridge_Repository/Logs`文件夹中。若要在 `tmp` 文件夹中保存日志，请运行以下命令：

docker container run --volume /tmp/bridge\_logs:/root/Documents/My\_Tableau\_Bridge\_Repository/Logs -it bridge\_final /bin/bash

在此示例中，该位置由 /tmp/bridge\_logs 指定。使用 docker 命令可以简化日志文件的保存，并避免手动将 Bridge 日志文件从容器复制到本地文件系统。

### MySQL 驱动程序失败

如果 `LC_MESSAGES` 没有设置 `UTF-8` 区域设置，您可能会遇到读取和显示问题。您可以编辑 `/etc/profile` 文件，或使用以下命令重新启动工作线程：

LC\_ALL=en\_US.UTF-8 /opt/tableau/tableau\_bridge/bin/run-bridge.sh -e

### 由于个人访问令牌过期，Bridge 客户端意外停止

当个人访问令牌 (PAT) 过期时，它将导致 Bridge 客户端与 Tableau Cloud 断开连接，并可能导致容器关闭。您可以从 Bridge 客户端通过在前台执行 Start 命令来验证您的 PAT 是否已过期。如果 PAT 已过期，您将看到以下错误：

`The client credentials are invalid. To complete the request, reset the credentials, and sign in to the Tableau Bridge client.`

如果您是原始 PAT 所有者，您还可以通过访问 Tableau Cloud 中的“管理帐户设置”来验证 PAT 是否已过期。为了解决该问题，您需要生成一个新的 PAT 并按照上面的[步骤 4：运行 Bridge 容器](#runBridgeContainer)步骤操作。

### 嵌入式数据提取和嵌入式实时连接超时错误

Linux 版 Bridge 的 24.3 版本为嵌入式数据提取和嵌入式实时连接提供了显著的性能改进。如果您在使用以前的版本时遇到超时错误，我们建议您升级到 Linux 版 Bridge 24.3+ 版本。如果这不能解决问题，请从工作簿中单独发布数据源。