容器中的 Tableau Server - 使用映像

简介

“容器中的 Tableau Server”是 Tableau 的第一款基于容器的服务器产品。“容器中的 Tableau Server”是在 Linux Docker 容器内运行的一体化 Tableau Server 实例。换句话说,“容器中的 Tableau Server”是运行整个自包含 Tableau Server 应用程序的 Docker 映像。“容器中的 Tableau Server”是我们为在基于容器的环境中运行的 Tableau Server 提供支持的许多步骤中的第一个步骤。了解“容器中的 Tableau Server”概念的最简单方法是将其看作一个预装了 Tableau Server 的虚拟机 (VM)。映像以 UBI 8 映像(适用于版本 2022.1 及更低版本的 CentOS 7.x)为基础,并在容器内运行 supervisord(而不是 systemd)。容器启动 supervisord 后,将立即尝试初始化和启动 Tableau Server。此处的大部分文档旨在描述如何提供配置和利用自动化,以便您可以在 Docker 环境中运行 Tableau Server。

“容器中的 Tableau Server”映像设置工具可帮助您创建和自定义容器映像以包括自定义包和项目。该工具的主要功能之一是构建容器映像并安装自定义数据连接器。

若要在概念验证方案中快速测试容器映像中的 Tableau Server,请参见容器中的 Tableau Server - 快速入门

“容器中的 Tableau Server”的限制

  • “容器中的 Tableau Server”仅支持使用服务器 ATR 激活许可证。2023.1 及更高版本支持使用服务器 ATR 脱机激活。此功能在容器中可用,但需要额外的步骤和批准。如果您需要在隔离网络的环境或脱机环境中运行“容器中的 Tableau Server”,请联系您的客户代表了解详细信息。
  • “容器中的 Tableau Server”当前不支持 Resource Monitoring Tool (RMT) 代理。
  • “容器中的 Tableau Server”不支持 Kerberos。

“容器中的 Tableau Server”映像

“容器中的 Tableau Server”映像是包含所有 Tableau Server 的 Docker 映像。该映像是使用“容器中的 Tableau Server”设置工具构建的。构建时,映像包括 Tableau Server,但尚未初始化。“容器中的 Tableau Server”映像中的默认用户是非 root 无特权用户。

先决条件

运行 configure-container-host 脚本

在没有容器的情况下安装 Tableau Server时,某些资源限制和核心转储属性会在安装过程中更改。完成此操作是为了帮助优化 Tableau Server 的性能。“容器中的 Tableau Server”映像无法在主机上进行这些更改,因此我们建议在将要运行“容器中的 Tableau Server”的任何计算机上运行“容器中的 Tableau Server”设置工具中提供的 configure-container-host 脚本。这将有助于确保“容器中的 Tableau Server”映像中的性能与其非容器对应映像相当。

若要运行 configure-container-host 脚本,请执行以下操作:

  1. 在“容器中的 Tableau Server”设置工具的顶级目录中找到脚本 (configure-container-host)。
  2. 将其复制到您计划运行 Tableau Server 的环境。

  3. 确定将以“容器中的 Tableau Server”映像的默认用户身份运行的非特权用户帐户/uid。此用户应存在于主机上,并且应与 Tableau Server 容器 UNPRIVILEGED_TABLEAU_UID 环境变量中设置的 UID 匹配。如果您在创建 Docker 映像时未设置此项,则容器内的默认非特权用户 ID 为 999。如果您使用 Docker 用户映射,则此 UID 应与主机上存在的用户相对应。

  4. 以 root 身份执行脚本:

    sudo ./configure-container-host -u <uid>

运行映像

若要运行“容器中的 Tableau Server”docker 映像,运行“容器中的 Tableau Server”映像的最简单命令如下:

docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>

这将在后台运行 Docker,一段时间后,将生成完全安装的 Tableau Server 实例。Tableau Server 可能需要 10 到 20 分钟才能完全启动,具体取决于运行映像的计算机的硬件。您可以键入 docker ps 命令来确认容器是否正在运行。Tableau Server 运行后,需要创建初始 Tableau Server 管理员帐户。这一步可以自动完成。有关详细信息,请参见自动设置初始 Tableau Server 管理员

基本运行参数摘要

Docker run 命令中使用的所有选项都是必需的,通常会提供更多选项以利用映像中的不同功能。现在,让我们仔细看看“容器中的 Tableau Server”最简单的 Docker run 命令中使用的参数:

参数描述
-e LICENSE_KEY=<key>Tableau Server 必须获得许可。此环境变量存储将用于为服务器授予许可的密钥。这是初始化过程的必要组成部分。您可以提供由逗号分隔的多个许可证。
-p 8080:8080这告知 Docker 在容器内公开端口 8080,并将其绑定到主机上的端口 8080。第一个 8080 值是可配置的,更改此值将修改主机上映射的端口。默认情况下,Tableau Server 预期会在容器内的端口 8080 上接收用户流量,您可以选择是在不同的主机端口上公开此端口还是根本不公开此端口。

 

自动设置初始 Tableau Server 管理员

当 Tableau Server 首次启动时,必须先创建初始管理员用户,然后才能使用远程网络连接来连接到 Tableau Server。这可以通过在容器内运行 tabcmd initialuser -s localhost:8080 -u <username> -p <password> 命令来实现。您还可以通过环境变量设置管理员凭据。TABLEAU_USERNAME 以及 TABLEAU_PASSWORDTABLEAU_PASSWORD_FILE(首选)是环境变量,可以设置这些环境变量来传入初始管理员凭据。有关密码管理的详细信息,请参见密码管理

有关 tabcmd initialuser 命令的详细信息,请参见initialuser

示例

docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

许可

容器中的许可

“容器中的 Tableau Server”的许可使用服务器授权运行 (ATR) 服务来激活部署在云、容器或虚拟环境中的 Tableau Server,而不会耗尽许可证激活次数。ATR 服务通过提供可配置持续时间(ATR 持续时间)的短期租约来实现这一点,直至达到产品密钥到期日期为止。ATR 从基础硬件更改中提取 Tableau 许可,这是容器部署的一个基本方面。由于 Server ATR 要求容器能够访问 Tableau 托管的 ATR 服务,因此容器需要访问 Internet。“容器中的 Tableau Server”不支持脱机或手动激活。有关更多详细信息,请参见使用授权运行 (ATR) 服务激活 Tableau Server

重要信息:您必须提供LICENSE_KEYLICENSE_KEY_FILE 环境变量(只设置一个)。

升级容器中的 Tableau Server 时,如果您的许可使用了最大激活次数,Tableau Server 在 ATR 持续时间(默认为 4 小时/14400 秒)结束之前无法启动。有关设置或更改 (ATR) 持续时间的详细信息,请参见使用授权运行 (ATR) 服务激活 Tableau Server(链接在新窗口中打开)

许可证环境变量

“容器中的 Tableau Server”支持使用环境变量设置许可证密钥:LICENSE_KEY 可通过逗号分隔的列表包含一个或多个密钥 (-e LICENSE_KEY="<key1> , <key2>")。

示例

docker run \
-e LICENSE_KEY="<key1>, <key2>" \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

许可证文件

“容器中的 Tableau Server”还支持使用文件设置许可证密钥。将文件装载到容器中的默认许可证密钥文件位置 (/docker/config/license_file) 或环境变量 LICENSE_KEY_FILE 指定的其他位置。

示例

docker run \
-v <full-path-to-license-file>:/docker/config/license_file \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

求的许可证租用时间

您可以通过设置环境变量REQUESTED_LEASE_TIME 在 Tableau Server 容器中指定 ATR 许可证租用时间。您必须提供以秒为单位的租用时间,最短持续时间为 3600 秒(即 1 小时)。建议您在试验和测试 Tableau Server 时缩短租用时间,以减少达到最大激活租用限制的可能性。对于生产部署,强烈建议不要设置 REQUESTED_LEASE_TIME 参数(因而使用默认值),以便 Tableau 可以确定理想的租用时间。

示例

docker run \
...
-e REQUESTED_LEASE_TIME=<time-in-seconds> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

运行未初始化的映像

Tableau Server 有两个安装阶段,首先安装 Tableau 服务管理器 (TSM) 服务。在典型的本地安装中,服务器管理员将在此步骤中注册其服务器、激活其许可证以及配置服务器以按其所需的方式运行。安装的第二阶段是设置和启动使用 Tableau Server 进程,这些进程将处理最终用户流量和相关的业务逻辑。

“容器中的 Tableau Server”映像的默认行为是自动执行所有安装步骤,以便 docker run 命令最终会产生一个功能齐全的服务器。但是,如果要启动“容器中的 Tableau Server”映像,并且仅让它运行 TSM 服务(如果服务器管理员刚刚运行了 initialize-tsm,这是他们所预期的),则可以通过将 TSM_ONLY 标志作为环境变量传递来执行此操作。

例如:

docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

与映像交互

当您运行“容器中的 Tableau Server”映像时,可以直接调用 TSM 和 tabcmd 命令。这些工具将直接添加到 pid 1 用户的环境路径(此时为 root)。这意味着您可以调用 TSM 和 tabcmd 命令,如下所示:

docker exec -it <container> tsm status -v
docker exec -it <container> tabcmd initialuser -s localhost -u <admin> -p <secret>

还可以在容器中打开 shell 以执行更常规的操作。除调试目的外,通常不建议这样做:

docker exec -it <container> bash

TSM Web UI 和远程 CLI

默认情况下无法访问 TSM Web UI 和远程 CLI。这是因为它需要用户名和密码进行身份验证,默认情况下,在容器中运行 Tableau Server 进程的用户不会提供密码。这样做是出于安全原因(我们不希望在映像中随映像附带默认密码,因为这将允许远程访问)。在某些情况下,TSM Web UI 和使用 TSM CLI 进行远程访问调用可能很有用。如果您想使用这些功能,您需要按照下面列出的步骤创建远程访问用户帐户。

有关 TSM Web UI 和 CLI 的更详细信息,请参见登录到 Tableau 服务管理器 Web UI

创建 TSM 远程用户

使用设置工具构建“容器中的 Tableau Server”映像时,指定 TSM_REMOTE_UIDTSM_REMOTE_USERNAME 环境变量。在映像中创建启用了 TSM 的帐户需要在运行时不可用的映像中的特权访问,因此只有在通过“容器中的 Tableau Server”设置工具 (build-image) 构建 Docker 映像时才能完成。

“容器中的 Tableau Server”设置工具 environment 文件示例:

TSM_REMOTE_UID=1010
TSM_REMOTE_USERNAME=myuser

为 TSM 远程用户设置密码

“容器中的 Tableau Server”映像在运行映像时需要帐户密码。您可以通过两种方式为此帐户设置密码。

密文文件(推荐)

创建一个名为 remote-user-secret 的文件,将密码写入该文件并在运行时将其挂载到容器中。TSM_REMOTE_PASSWORD_FILE 确定容器中密文文件的预期位置(默认位置为 /docker/config/remote-user-secret)。

远程用户密文文件示例:

mypassword

docker run 命令示例:

docker run \
-e LICENSE_KEY=<key>
-v {absolute-path}/remote-user-secret:/docker/config/remote-user-secret
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>
环境变量

在启动 docker 映像时,您也可以简单地设置 TSM_REMOTE_PASSWORD 环境变量。

docker run 命令示例:

docker run \
-e LICENSE_KEY=<key>
-e TSM_REMOTE_PASSWORD=<password>
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>

安全注意事项

  • 必须公开端口 8850 才能接收 TSM 请求流量。
  • 如果在运行时映像中的密码设置不正确,容器将立即退出。
  • TSM 依赖于映像的 Linux 用户帐户系统。在这种情况下,帐户在映像内是受限制的。这意味着该帐户将具有受限的 shell,并且仅限于执行两个命令:/bin/truepasswd

如何轮换 TSM 远程用户的密码

如果要轮换 TSM 远程用户的帐户密码,可以使用以下任一选项实现此目的:

启动新的“容器中的 Tableau Server”

每次容器启动时都会设置帐户的密码。如果您将 Tableau 数据保留在容器外,则使用新密码启动新映像将有效地轮换密码。

  1. 关闭并移除正在运行的映像
  2. 在映像配置中的 TSM_REMOTE_PASSWORDTSM_REMOTE_PASSWORD_FILE 环境变量(见上文)中设置新的密码值。
  3. 再次启动映像。
在正在运行的容器内手动轮换密码

如果您不想关闭映像,您仍然可以手动轮换密码。

  1. 在正在运行的容器中打开 shell
  2. 使用 su 命令以远程用户帐户身份登录
  3. 运行 passwd 命令以更改密码。

    警告:这些手动轮换仅在容器实例的写入层保留时才持续存在。如果删除容器,则在启动新容器时不会应用手动更改。

 

初始配置选项

配置“容器中的 Tableau Server”对于获得所需的 Tableau Server 行为至关重要。“容器中的 Tableau Server”是 Tableau Server 的全新安装,因此您需要向容器提供与在容器外配置 Tableau Server 时相同的信息。

运行时环境变量

下面的运行时环境变量指示“容器中的 Tableau Server”映像如何部署 Tableau Server。将更详细地介绍这些变量的子集。

所有这些值都被设计为可重写,以实现更大的配置灵活性。

环境名称默认描述
ACCEPTEULA0如果映像是使用“容器中的 Tableau Server”设置工具构建的,则自动设置为 1。
LICENSE_KEY 设置为将用于为服务器授予许可的许可证密钥。接受用逗号分隔的多个许可证。
LICENSE_KEY_FILE/docker/config/license_file 许可证文件的文件路径。许可证文件的格式应为每行一个许可证密钥。
REGISTRATION_FILE/docker/config/tableau_reg.json映像内注册文件的文件路径。默认情况下,这包含在构建“容器中的 Tableau Server”映像时提供的注册信息。在运行时可覆盖此信息。有关详细信息,请参见激活并注册 Tableau Server
REGISTRATION_DATA 在运行时覆盖注册信息的另一种方法。此环境变量必须设置为序列化的 JSON 字符串,其中包含与 Tableau Server 注册文件中相同的注册信息。有关详细信息,请参见激活并注册 Tableau Server
TABLEAU_USERNAME 这是指 Tableau Server 上的初始管理员帐户。这是推荐但可选的。如果未设置此用户,则需要使用 tabcmd 设置 Tableau Server 的初始管理员帐户。如果将此变量设置为某个值,则还需要密码。仅当首次初始化 Tableau Server 时,才会使用此变量。设置此值将指示“容器中的 Tableau Server”自动尝试初始化用户。有关详细信息,请参见添加管理员帐户
TABLEAU_PASSWORD 表用户的纯文本密码。这是指 Tableau Server 上的初始管理员帐户。如果指定了 TABLEAU_USERNAME,则这是必需的。有关详细信息,请参见添加管理员帐户
TABLEAU_PASSWORD_FILE 仅包含 tableau 用户密码文本的文件的文件路径。这是指 Tableau Server 上的初始管理员帐户。如果指定了 TABLEAU_USERNAME,则这是必需的。有关详细信息,请参见添加管理员帐户
CONFIG_FILE/docker/config/config.json

默认 TSM 配置文件的文件路径。该文件将用于配置 Tableau Server。有关详细信息,请参见配置文件示例

如果使用 CONFIG_FILE,请不要设置 CONFIG_DATA

CONFIG_DATA 这可用作 CONFIG_FILE 的替代。如果要在不挂载外部文件的情况下向服务器提供配置,请将此环境变量设置为 TSM 配置文件的等效序列化内容。

示例 CONFIG_DATA="{\"configEntities\":{\"identityStore\":{\"_type\":\"identityStoreType\",\"type\":\"local\"}}}"有关更多信息,请参见配置文件示例

如果使用 CONFIG_DATA,请不要设置 CONFIG_FILE

IGNORE_TOPOLOGY_CONFIG00 或 1。如果设置为 1,容器将忽略由 CONFIG_FILE 指定的配置文件中存在的任何拓扑相关配置。
BACKUP_FILE/docker/config/backup/backup-file.tsbakTableau Server 备份文件 (.tsbak) 的文件路径。如果在初始化期间提供,服务器将尝试还原。
INIT_CONTAINER00 或 1。如果设置为 1,Tableau Server 将只会尝试初始化 TSM 并初始化 Tableau Server,并且容器将在完成时退出。
TSM_ONLY00 或 1。相当于安装 Tableau Server rpm 并运行 initialize-tsm。只有 TSM(Tableau 服务管理器)服务才会启动。当容器首次初始化时才有效(如果使用以前初始化的服务器目录启动“容器中的 Tableau Server”,则此功能将不起作用)。
BOOTSTRAP_INSTALL00 或 1。指示服务器是初始节点还是附加节点。如果设置为 1,容器将无限期等待,直到引导程序文件在 $BOOTSTRAP_FILE 指定的位置退出
ALWAYS_WRITE_BOOTSTRAP_FILE0 0 或 1。如果设置为 1,则容器会将引导程序文件写入到 BOOTSTRAP_FILE 中指定的位置。
WAIT_FOR_BOOTSTRAP_FILE10 或 1。如果设置为 1(默认值),如果容器检测到它是工作服务器安装 (BOOTSTRAP_INSTALL=1)。容器将无限期地等待,直到检测到位于 BOOTSTRAP_FILE 中设置的路径的文件。如果在启动过程运行时设置为 0,则将跳过此等待。这在某些调试情况下很有用。
BOOTSTRAP_FILE/docker/config/bootstrap/bootstrap.json引导程序文件的文件路径。仅适用于工作服务器容器。此文件应仅指向引导程序文件。该典型的用法是将目标文件的目录(默认为 /docker/config/bootstrap)挂载到主机。
BOOTSTRAP_DATA这可用作 BOOTSTRAP_FILE 的替代。如果要在不挂载外部文件的情况下提供引导程序文件,请将此环境变量设置为 TSM 引导程序文件的等效序列化内容。如果使用 BOOTSTRAP_FILE,则不要设置 BOOTSTRAP_DATA。
PORT_RANGE_MIN8800 出于性能原因,我们建议仅公开 200 个端口 8800-9000,而不是 Tableau Server 本地部署默认的 8000-9000 端口范围,因为在 Docker 中公开 1000 个端口可能会对 Docker 映像的启动时间产生负面影响。有关详细信息,请参见下面的公开许可和 TSM 端口
PORT_RANGE_MAX9000我们建议仅公开 200 个端口 (8800-9000),而不是 Tableau Server 本地部署默认的 8000-9000 端口范围,因为在 Docker 中公开 1000 个端口可能会对 Docker 映像的启动时间产生负面影响。有关详细信息,请参见下面的公开许可和 TSM 端口
HTTP_PROXY 若要将 http 请求转发到代理服务器,请将此环境变量设置为指向代理主机。例如,若要为端口 8080 将代理设置为 example-host,请设置为 HTTP_PROXY=http://example-host:8080/
HTTPS_PROXY 若要将 https 请求转发到代理服务器,请将此环境变量设置为指向代理主机。例如,若要为端口 443 将代理设置为 example-host,请设置为 HTTPS_PROXY=http://example-host:443/ HTTPS_PROXY 环境变量指定 URL 时,请务必使用“http”。
NO_PROXY 若要绕过代理服务器,请在 no_proxy 变量中指定例外。如果您的代理服务器不路由内部地址,请使用此变量。您还必须向此代理配置中添加例外来保证本地 Tableau Server 群集(如果目前有该群集或稍后将有该群集)内的所有通信不会路由到代理服务器。输入每台计算机的主机名和 IP 地址,并添加容器的主机名。此外,还要包括本地计算机的规范主机名 (localhost) 和 IP 地址 (127.0.0.1)。例如,若要为三节点群集指定例外: NO_PROXY="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
COORDINATION_SERVICE_CLIENT_PORTPORT_RANGE_MINPORT_RANGE_MAX 之间的任何端口用于协调服务的客户端端口。
COORDINATION_SERVICE_PEER_PORTPORT_RANGE_MINPORT_RANGE_MAX 之间的任何端口用于协调服务的对等端口。
COORDINATION_SERVICE_LEADER_PORTPORT_RANGE_MINPORT_RANGE_MAX 之间的任何端口用于协调服务的首领端口。
LICENSE_SERVICE_VENDOR_DAEMON_PORTPORT_RANGE_MIN PORT_RANGE_MAX 之间的任何端口用于许可证服务的供应商守护进程端口。
AGENT_FILE_TRANSFER_PORTPORT_RANGE_MINPORT_RANGE_MAX 之间的任何端口用于代理服务的文件传输端口。
CONTROLLER_PORTPORT_RANGE_MINPORT_RANGE_MAX 之间的任何端口用于控制器服务的 https 端口。
REQUESTED_LEASE_TIME默认值当前设置为 4 小时。为服务器 ATR 激活设置请求的租用时间。您需要提供以秒为单位的时间值,最短持续时间为 14400 秒(即 4 小时)。对于生产部署,通常不建议更改此值。但是,在使用“容器中的 Tableau Server”进行开发或原型设计时,您可能希望将此值设置为最小值,以最大程度地减少激活丢失。

只读环境变量

这些环境属性描述“容器中的 Tableau Server”映像的一些基本属性。不建议重写这些值。

环境名称默认描述
PRE_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/pre_init_command要在 Tableau Server 初始化之前在 Tableau Server 中运行的用户自定义 bash/可执行文件的路径。注意:确保文件对所有用户都有执行权限,否则请运行 chmod +rx <path-to-pre-init-command-file>
POST_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/post_init_command服务器功能齐全并正在运行后,要在 Tableau Server 中运行的用户自定义 bash/可执行文件的路径。注意:确保文件对所有用户都有执行权限,否则请运行 chmod +rx <path-to-post-init-command-file>
DATA_DIR/var/opt/tableau/tableau_server应写入 Tableau Server 核心程序的数据目录。
INSTALL_DIR/opt/tableau/tableau_server写入 Tableau Server 安装核心程序的安装目录。
SERVICE_NAMETableau Server在容器中运行的应用程序的名称。
SERVICE_VERSION不可用容器中安装的 Tableau Server 的版本。
DOCKER_CONFIG/docker存储 Tableau 特定 docker 配置的目录。
ENV_FILE${DOCKER_CONFIG}/customer-files/environment包含所有用户环境覆盖的文件。

构建时环境变量

   
BASE_IMAGE_URL使用构建工具命令:build-image -bbuild-image 工具和 Dockerfile 中指定的默认映像是唯一官方支持的基础映像。此参数可用于从自定义 docker 映像存储库中提取此特定基础映像的副本或定义自定义基础映像。如果您选择使用自定义基础映像,您有责任确保它基于 UBI 8(对于版本 2022.1 及更低版本为 CentOS 7 或 RHEL 7)并包含正确运行 Tableau Server 所需的资源。有关自定义基础映像的详细信息,请参见容器中的 Tableau Server - 使用映像
PRIVILEGED_TABLEAU_GID997 特权 Tableau 组的 GID。
UNPRIVILEGED_TABLEAU_GID998 非特权 Tableau 组的 GID。
UNPRIVILEGED_TABLEAU_UID999 运行 Tableau 进程的用户的 UID(单用户部署)。
UNPRIVILEGED_USERNAMEtableau 非特权用户的字符串名称。
UNPRIVILEGED_GROUP_NAMEtableau 非特权组的字符串名称。
PRIVILEGED_GROUP_NAMEtsmadmin 特权组的字符串名称。
LANGen_US.UTF-8区域设置

 

Tableau Server 配置覆盖

Docker 可以覆盖这些环境变量以指向容器中的任何文件。因此,如果要指定不同的装载点,欢迎您这样做。

Tableau Server 需要一个配置文件来启动和运行:

CONFIG_FILE=/docker/config/config.json

CONFIG_FILE 指的是 TSM 配置文件。格式和用法与配置文件示例中描述的配置文件相同。

初始化前和初始化后的命令

Tableau Server 运行一个自动安装脚本,旨在将 Server 从初始化前状态转变为完全运行。但是,有时您可能希望在初始化过程中添加自己的自动化代码。我们提供了两个钩子来实现这一点,初始化前脚本和初始化后脚本。

初始化前脚本

此脚本将在基本 TSM 进程初始化之后和执行任何其他 TSM 设置步骤之前立即运行。这对于在 Tableau Server 运行之前执行 TSM 配置命令很有用。对于此时所做的配置更改,您不需要应用更改,因为正常的 Tableau Server 自动化会在您的脚本完成后执行此操作。

初始化后脚本

此脚本将在所有其他 Tableau Server 初始化和启动自动化完成后运行。当此脚本执行时,Tableau Server 将具备完全功能并运行。必须应用此时所做的配置更改。

描述

若要将自定义脚本添加到映像中的这些钩子之一,请按照下列步骤操作:

  1. 编写您的自定义脚本
  2. 将自定义脚本复制到“容器中的 Tableau Server”构建映像工具的 customer-files 目录。
  3. 将脚本重命名为 pre_init_commandpost_init_command,具体取决于您希望脚本何时运行(您可以相互独立地使用两个钩子)。
  4. 确保脚本的权限可由其他用户执行 (chmod +rx <command-file>),或者所有权权限与容器中的非特权用户匹配。

用户配置

Tableau Server 使用非特权用户运行服务器进程。此用户是在“容器中的 Tableau Server”初始化时在容器内创建的。默认情况下,该用户名为 tableau ,UID 为 999。如果要部署“容器中的 Tableau Server”,其使用装载以在主机上以外部方式存储数据,则您可能更愿意更改 UID 以映射到主机上的 UID。使用 docker 用户命名空间是实现相同效果的另一种方法。

“容器中的 Tableau Server”实用程序和工具

所有“容器中的 Tableau Server”实用程序和工具功能都放在此目录下:

/docker/

文件权限管理

将任何配置文件传递到容器时,您需要确保在容器内运行 Tableau Server 进程的用户具有访问文件的权限。为了避免为所有用户授予对装载到容器中的文件的访问权限,您可以更改在容器内运行 Tableau Server 的用户的 UID 和/或 theGID,以匹配主机上的用户/组所有者。容器用户将有一个由 UNPRIVILEGED_TABLEAU_UID 环境变量定义的 UID(默认值:999)和由 UNPRIVILEGED_TABLEAU_GID 确定的 GID(默认值:998)。可以通过重写环境变量来更改这些值,也可以使用 Docker 用户命名空间映射将容器中的 UID/GID 与主机上的不同 UID/GID 相关联。

密码管理

某些功能和选项要求将用户凭据作为配置设置提供给容器。Tableau 初始管理员凭据是启用额外功能的可选凭据的示例。在这些情况下,我们总是提供两种设置密码的方法。第一,您可以提供包含密码的文件,并将文件路径提供给环境变量。或者,您可以设置环境变量以直接存储密码。

建议的更安全选项是以容器文件路径的形式提供密码。在文件中提供密文是在 Docker、Docker Swarm、Kubernetes 和其他容器编排系统中得到良好支持的模式。直接在环境变量中存储密码是一种常见的模式,因此我们确实支持这种方法,但它通常意味着密码不太安全。

示例

让我们来看看 TABLEAU_USERNAME 凭据。您可以以 TABLEAU_PASSWORDTABLEAU_PASSWORD_FILE 形式提供用户的密码。运行“容器中的 Tableau Server”映像时,您可以提供任一环境变量来提供密码。

密码文件环境变量要求容器内的文件路径是有效的密文文件。密文文件应为包含密文的单行文件。

使用密文文件的示例
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD_FILE=/etc/admin-secret \
-v <full-path-to-pw-file>:/etc/admin-secret \
-d <Tableau Server in a Container image ID or tag>
密文文件的示例内容
mypassword23879172

或者,用户可以直接在密码环境变量中用纯文本存储密码。此方法被认为不太安全,但它更方便,并且是容器的常见模式。

示例
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD=password \
-d <Tableau Server in a Container image ID or tag>

在 Tableau Server 正在运行后对其进行配置

Tableau Server 初始化并运行后,与服务器交互的最佳方式是使用 TSM CLI 工具。这是用于执行管理任务的经典 Tableau Server 工具。将来,我们将支持 Tableau Server 在两次运行之间响应 CONFIG_FILE 环境变量中提供的静态配置更改。但就目前而言,在 Tableau Server 初始化之后,您必须使用经典工具与服务器进行交互。

有关 TSM 命令行的详细信息,请参见tsm 命令行参考

状态

针对映像中提供的 Tableau Server 提供了两种基本状态检查。这些可用于检查服务器的活动性和就绪性。

活动性检查

活动性检查指明 TSM 服务是否正在运行。这意味着它将指明 Tableau Server 的编排服务是否正在运行和并发挥作用。可在此处调用此检查:

/docker/alive-check

另一个选项是公开端口 8850,Tableau 控制器服务将运行该选项以便通过 Web 浏览器提供管理功能。用户可以定期通过 tcp 运行状况检查来检查服务运行状况,从而检查服务的运行状况。

就绪性检查

就绪性检查指明 Tableau Server 是否正在运行,并且业务服务是否已准备好接收流量。可以使用以下脚本来确定这一点:

/docker/server-ready-check

另一个选项是通过端口 8080(或 Tableau Server 绑定接收流量的任何端口)使用 tcp 运行状况检查。有时,这种 tcp 运行状况检查比服务器就绪检查更可靠,因为服务器就绪检查基于报告给 TSM 的服务状态,有时在服务状态更新时可能会延迟。

持久数据

通常,使用容器时,我们希望能够在不丢失任何重要信息的情况下关闭容器并将其重新打开。“容器中的 Tableau Server”映像支持这一点,因为您可以在容器外部挂载某些目录,以便可以完全销毁或移除容器实例并仍保留数据。此数据可用于启动另一个容器实例,并在上一个容器关闭的位置恢复。

以下部分涵盖了不同类型的托管状态。

Tableau Server 数据

服务器数据全部存储在数据目录中。数据目录是存储所有用户相关数据和服务运行时元数据的位置。对数据进行外部化意味着,即使在完全移除“容器中的 Tableau Server”后,用户的数据也可以保留。

此数据是可传输的,并且可用于云管理的块存储系统,比如 AWS EBS 卷。

将容器中的 Tableau Server 与外部文件存储结合使用时,数据目录必须位于 EBS 上。不要将网络文件系统(例如 NFS)用于数据目录。外部文件存储目录可以位于 NFS 卷上。

静态主机名

Tableau Server 不能很好地处理动态主机名更改,因此指定容器的内部主机名非常重要,这样容器运行之间才能保持一致。容器内的主机名是任意的,可以设置为任何值。使用 --hostname 选项允许用户指定容器的内部主机名。确保使用相同持久性数据的后续容器使用同一主机名值运行。

不要将其与多节点服务器安装混淆。在这些情况下,应该为每个附加节点分配不同的主机名。重要的是,当重新启动任何单一容器时,将为该实例使用相同持久性数据的替换容器必须具有匹配的主机名。

完整示例

这是一个示例,其中数据目录挂载在容器外部。

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

备份和还原

“容器中的 Tableau Server”支持 Tableau Server 创建备份并从备份文件 (.tsbak) 进行还原。第一步是运行“容器中的 Tableau Server”映像,将备份文件 (.tsbak) 挂载在映像中,并使用备份文件的文件路径设置环境变量 BACKUP_FILE。此外,您必须在 CONFIG_FILE 环境变量中提供备份 json 配置文件。即使对于多节点部署,Tableau Server 容器也会自动执行还原过程。如果在任何时候此自动化操作无法完全还原系统,您始终可以使用经典 Tableau Server 工具和进程(例如 TSM 命令)以与非容器部署相同的方式与 Tableau Server 交互。

有关如何执行标准 Tableau Server 实例备份和还原的详细信息,请参见执行 Tableau Server 的完整备份和还原

Tableau Server 容器中的备份

  1. 在“容器中的 Tableau Server”版本 A 中打开 shell。创建存储库备份以及拓扑和配置备份文件。

    docker exec -it my-server bash
    
    # Just providing filename automatically produces the backup file at /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
    tsm maintenance backup -f <repository-backup>.tsbak -d
    
    # Any filepath where current user(UNPRIVILEGED USER) can write.
    tsm settings export -f /var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json
  2. 将上一步创建的文件复制到主机计算机中。将文件权限更改为对两个文件都设置了“全部读取”权限。

    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<repository-backup>.tsbak ./<repository-backup>.tsbak
    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json ./<topology-conf-backup>.json
    chmod a+r ./<repository-backup>.tsbak ./<topology-conf-backup>.json
  3. 将备份项目存储在安全位置。需要时,请按照以下还原步骤进行操作。

Tableau Server 容器内的还原

来自任何受支持的 Tableau Server 版本(容器和非容器)的备份都可以在 Tableau Server 容器内还原。

先决条件
  • Tableau Server 备份文件。
  • 包含配置和拓扑信息的配置 json 文件。
  • 注意:您可能需要更改备份文件以设置“全部读取”权限。备份文件通常锁定到创建该文件的用户,此用户可能与在容器中运行的 Tableau 用户不同。
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

注意:

  • 如果您要还原多节点系统,您还必须启动其他节点,以便还原自动化工作。有关详细信息,请参见本文档的多节点“容器中的 Tableau Server”部分。只有初始节点需要备份文件、备份配置文件和许可证。
  • 备份文件只需要在容器第一次运行时提供。服务器初始化后,您无需继续挂载在备份文件中。

 

从 Tableau Server 迁移到“容器中的 Tableau Server”

为了从标准 Tableau Server 安装迁移到“容器中的 Tableau Server”,您必须使用备份和还原技术。来自任何受支持的 Tableau Server 版本(容器和非容器)的备份都可以在 Tableau Server 容器内还原。有关详细信息,请参见上面的Tableau Server 容器内的还原部分。

升级 Tableau Server 版本

可通过两种方式升级 Tableau Server。本节中列出的升级映像方法是推荐的解决方案。但是,作为后备,也可以使用备份/还原来升级 Tableau Server。

通过升级映像方法升级

升级映像是一个 Docker 映像,可以使用“容器中的 Tableau Server”设置工具中的 build-upgrade-image 脚本构建。该映像仅用于升级当前运行的“容器中的 Tableau Server”。

请按照以下步骤进行升级。

  1. 使用 build-upgrade-image 脚本创建升级映像。构建这个容器需要新版本的 tableau server rpm。
  2. 关闭当前运行 Tableau Server 的容器。
  3. 启动升级映像,挂载与上一步关闭的容器相同的数据目录。
  4. 升级过程需要一段时间,但会升级 Tableau Server,查看 docker 日志以获取升级过程更新。容器将在升级过程后关闭。
  5. 启动较新版本的新“中的 Tableau Server”。挂载与前面步骤相同的目录。

示例:

假设我们有一个运行 Tableau Server 的“容器中的 Tableau Server”。下面是此示例中所做的一些假设:

  • 我有宝贵的数据,我不想在升级过程中丢失任何数据。数据目录需要保留在容器外部。
  • 该容器名为 my-server。docker 映像名为 tableau-server:versionA。
  • my-server 当前正在使用的服务器版本为版本 A。
  • 要升级到的服务器版本为版本 B。
  1. 获取版本 B 的 tableau server rpm。创建升级映像。

    # For all the options available in the script
    ./build-upgrade-image -h
     
    # Frequently used command to create a upgrade-image
    ./build-upgrade-image --installer=<path to the tableau server version B> -i tableau-server:versionA -o tableau-server-upgrade:versionAB
  2. 停止 my-server 容器。

    docker stop my-server -t 120
  3. 启动新创建的映像 tableau-server-upgrade:versionAB。挂载先前停止的容器中的相同数据目录。容器开始升级到版本 B 的过程。

    docker run --name my-upgrade-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    tableau-server-upgrade:versionAB
  4. 升级完成后,容器将停止。检查 docker 日志以获取升级过程日志并确保升级过程成功。您还可以检查 docker 容器的退出代码,以确保升级过程成功完成。

    # The log file /var/opt/tableau/tableau_server/logs/upgrade-console.log is created after 3-4 mins into the start of upgrade container. When the upgrade completes successfully, "upgrade is complete" log will be # seen.
    docker logs my-upgrade-server
    ...
    ...
    Verifying licensing state.
    Tableau Server has been upgraded to version near.20.0801.1050.
    >> The upgraded Tableau binary directory will be added to PATH for new shells. To get the
    >> updated path, either start a new session, or for bash users run:
    >> source /etc/profile.d/tableau_server.sh
    Starting service...
    Starting service...
    Job id is '12', timeout is 30 minutes.
    Service was started successfully.
    Status: RUNNING
    Tableau Server is Running
    upgrade is complete
  5. 停止 my-upgrade-server 容器。启动“容器中的 Tableau Server”映像的新版本 B,并挂载停止的 my-upgrade-server 容器中的数据目录

    # Stop the server.
    docker stop my-upgrade-server -t 120
    
    
    # Run the new version Hu
    docker run --name my-upgraded-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    ...
    tableau-server:versionB

通过备份还原方法进行升级

按照本文档的“备份和还原”部分中的步骤进行操作。将备份还原操作更改为升级操作所需的唯一调整是在新版本的 Tableau Server 上还原备份。

多节点“容器中的 Tableau Server”

多节点“容器中的 Tableau Server”是指分布在多个节点中的单一 Tableau Server 部署。此上下文中的多节点与 Tableau Server 多节点相同,可以在其他节点上运行某些进程以提高容量、计算能力等。这与启动多个单独的“容器中的 Tableau Server”不同,其中每个容器都是具有自己独特数据的独立服务器。

多节点“容器中的 Tableau Server”的工作方式与非容器 Tableau Server 多节点安装非常相似,并使用相同的基础机制。若要大致了解如何设置非容器 Tableau Server 多节点安装,请参见分布式和高可用性 Tableau Server 安装

下面是一个示例:

多节点基本用法

初始节点

选项 1:如果服务器配置 (CONFIG_FILE ) 指定多节点拓扑,则使用此选项:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

选项 2:如果您想要多节点部署,即使服务器配置未指定多节点拓扑,也可以使用此选项:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \

--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
其他节点
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

公开许可和 TSM 端口

为了使工作服务器节点与主实例通信,我们需要打开其他端口。您需要在以下端口范围内允许来自“容器中的 Tableau Server”主实例上其他节点的流量:

Service Ports: 8800-9000
Postgres Port: 8060
Licensing Ports: 27000-27010

注意您打开的端口数量:我们建议仅公开 200 个端口 8800-9000,而不是 Tableau Server 默认的 8000-9000 端口范围,因为在 Docker 中公开 1000 个端口可能会对 Docker 映像的性能和启动时间产生负面影响。您可以使用更小或更大的端口范围,具体取决于 Tableau Server 拓扑的复杂性。通常,我们不建议公开少于 100 个端口,否则您将面临集群中的服务无法与某些服务通信的风险。如果指定自己的端口范围,请确保公开端口 8850(这在 8800-9000 中隐式包含)。端口范围是通过设置 PORT_RANGE_MINPORT_RANGE_MAX 环境变量来指定的。

附加节点还需要公开服务端口范围 (8800-9000),但不包括许可端口范围。请务必注意,这些端口范围仅允许 Tableau Server 进程间通信。这些端口不应向用户或为同一多节点群集运行“容器中的 Tableau Server”的计算机以外的任何其他计算机公开。

这些端口规则与 Tableau Server 防火墙文档一致。有关详细信息,请参见配置本地防火墙

解析主机名

“容器中的 Tableau Server”需要使用一致的主机名运行,因为 Tableau Server 不会处理动态主机名更改。运行 Tableau Server 多节点时,这些节点将希望相互通信。Tableau Server 节点将尝试使用多节点“容器中的 Tableau Server”配置为使用的主机名相互联系。举例来说,如果运行主机名为“initial”的主节点,则附加节点会尝试将流量发送到名为“initial”的主机。您可以通过多种方式配置映像以将主机名解析为其他映像。每个容器中的 /etc/hosts 文件,用于将任意容器主机名(即“initial”)映射到实际运行另一个容器的 IP 地址。

引导附加节点

作为群集一部分运行的初始 Tableau Server 容器会生成一个引导程序文件,后续附加节点需要使用该文件加入群集。在将附加节点注册到群集拓扑后,您可以开始分配 Tableau Server 进程以在这些节点上运行。这个过程可以完全自动化。如果您提供了 Tableau Server 配置文件(通常通过将配置文件挂载到由 CONFIG_FILE 指定的路径来提供,默认路径: /docker/config/config.json),该配置文件指定多节点拓扑,初始节点将自动等待,直到所有附加节点都已注册。注册后,多节点拓扑将应用于整个集群。

一旦“容器中的 Tableau Server”中的初始节点完全运行 Tableau Server,就可以让它为附加节点生成引导程序文件:

docker exec -it <container-name> tsm topology nodes get-bootstrap-file -f $BOOTSTRAP_FILE

如果将 ALWAYS_WRITE_BOOTSTRAP_FILE 的值设置为 1,则会自动为您调用此命令。

安全注意事项

引导程序文件包含服务器密文,允许它建立与初始节点的 TSM 会话。这意味着,如果恶意用户获取了该文件,他们可以在一段时间内向服务器发送 TSM 命令。文件本身也包含数据,这些数据将允许对服务器配置密文进行解密。此文件应视为敏感文件,并且只能由与建立多节点部署直接相关的服务和系统访问。

引导程序过期

引导程序文件支持持续 2 小时的限时会话。在这段时间中,附加节点不需要向初始节点提供凭据即作为附加节点加入。会话过期后可以使用引导程序文件,但这意味着需要向初始节点提供凭据。

传输引导程序文件

需要向工作服务器节点的“容器中的 Tableau Server”提供引导程序文件并供其使用。需要与希望作为此部署的工作服务器节点的所有其他节点的“容器中的 Tableau Server”共享引导程序文件。可以通过许多不同方法来实现这一点。

通过安全网络传输文件

初始节点上的自动化部分可能涉及将文件直接发送到附加节点。此操作应使用某些安全的文件传输客户端/工具来完成。在初始节点的整个生命周期内可能生成多个引导程序文件(可在以后添加更多附加节点)的情况下,这可能更有用。

使用网络文件装载

给定部署中所有容器共享的网络文件装载是另一个选项。

其他

最终目标是安全地传输由一个容器生成的文件,并将其传输到一组特定的其他容器。因此,任何能实现此目标并且安全的方法就已足够。

启动附加节点

若要启动“容器中的 Tableau Server”附加节点,只需启动 BOOTSTRAP_INSTALL 环境变量设置为 1 的容器。

这将指示“容器中的 Tableau Server”实例休眠,直至一个引导程序文件存在于 BOOTSTRAP_FILE 环境变量(该环境变量也是可配置的)指定的路径中为止。请参考环境变量表以查看默认文件路径。澄清一下,如果在“附加节点模式”下运行“容器中的 Tableau Server”映像,该容器将不会启动 supervisord 或任何其他进程,而是会启动以 pid 1 运行的 bash 脚本,该脚本每 5 秒检查一次以查看引导程序文件是否存在。文件存在后,“容器中的 Tableau Server”将继续作为附加节点初始化。

配置附加节点

配置附加节点以运行特定拓扑的工作方式与普通Tableau Server 中相同。它也具有相同的要求,这意味着在节点上添加新进程可能需要群集范围的重新启动。有关详细信息,请参见配置节点

Tableau Server 功能注意事项

某些 Tableau Server 功能在容器中的工作方式有所不同。本节涵盖在容器环境中具有特殊或不同注意事项的特定功能。

Active Directory

设置 AD 域控制器

如果您计划使用 Active Directory 作为 Tableau Server 网页和站点的身份存储,则需要考虑额外的注意事项。在 Linux 环境中运行的 Tableau Server 通过检查其 IP 子网来动态确定要与之通信的 AD 域控制器。可以为容器分配任意 IP 地址,在这种情况下,Tableau Server 不一定能够使用其 IP 地址来查找合适的域控制器。因此,可能需要为 Tableau Server 配置特定的域控制器/主机名以与之通信。为此,请执行以下步骤:

  1. 确定您希望 Tableau Server 使用哪个域控制器并获取主机名。
  2. 使用标准 Tableau Server 管理配置选项将配置键 wgserver.domain.ldap.hostname 设置为主机名:

    • 在 json 配置文件 CONFIG_FILE 中设置值。
    • 使用 TSM 配置命令

      tsm configuration set -k wgserver.domain.ldap.hostname -v <hostname>

将 AD 证书导入 Tableau Server 密钥存储

默认情况下,只要使用简单绑定,“容器中的 Tableau Server”就会通过 StartTLS 与 AD 通信。所以在这种配置下运行容器时,需要将 AD 服务器证书导入 Tableau Server 密钥存储,否则服务器初始化将失败。为此,请执行以下步骤:

  1. 创建一个 pre-init-command 脚本(检查“初始化前脚本”部分)。添加以下行以将 AD 证书添加到 Tableau Server 密钥存储。

    ${INSTALL_DIR}/packages/repository.${SERVICE_VERSION}/jre/bin -importcert -noprompt -alias startTlsCert -file <mounted-certificate-path> -storetype JKS -storepass changeit -keystore ${DATA_DIR}/config/tableauservicesmanagerca.jks
  2. 在为 pre-init-command 脚本中的 -file 参数提供的文件路径处挂载 AD 服务器证书。

或者,可以禁用通过 StartTLS 与 AD 通信的默认设置。将 wgserver.domain.ldap.starttls.enabled 设置为 false 以禁用 StartTLS。但不推荐这样做。

部署配置举例

Docker

“容器中的 Tableau Server”基本用法
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
具有自动化初始管理员用户的“容器中的 Tableau Server”基本用法
docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
仅 TSM 模式
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
多节点基本用法
初始节点

选项 1:如果服务器配置 (CONFIG_FILE ) 指定多节点拓扑,则使用此选项:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

选项 2:如果您想要多节点部署,即使服务器配置未指定多节点拓扑,也可以使用此选项:

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
其他节点
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>
外部化数据用法
docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
初始化容器基本用法

初始化容器

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
-e INIT_CONTAINER=1 \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

运行容器

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
基本备份还原:单节点
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Docker-Compose

version: '3.2'
services:
    tableau-server:
         hostname: localhost
         volumes:
              - <your-tsm-command-file>:/docker/config/tsm-commands:ro
              - <your-config-file >:/docker/config/config.json:ro
         ports:
              - "8080:8080"
         image: ${IMAGE_NAME}
         environment:
              - LICENSE_KEY=<license-key>

 

 

感谢您的反馈!您的反馈已成功提交。谢谢!