Introduction

Tableau Server in a Container is Tableau's first container-based server offering. Tableau Server in a Container is an all-in-one Tableau Server instance running inside of a Linux Docker container. In other words, a Tableau Server in a Container image is a docker image that runs an entire self-contained Tableau Server application. Tableau Server in a Container is our first of many steps to support Tableau Server running in container-based environments. The easiest way to understand the concept of Tableau Server in a Container is to think of it like a VM with Tableau Server pre-installed. The image is based on a CentOS 7.x image and runs supervisord (instead of systemd) inside the container. When the container starts supervisord, it will immediately attempt to initialize and start Tableau Server. Much of the documentation here aims to describe how to provide configuration and leverage automation so you can run Tableau Server in Docker environments.

The Tableau Server in a Container Image Setup Tool helps you create and customize container images to include custom packages and artifacts. One of the primary functions of the tool is to build the container image and install custom data connectors. For detailed information on using the Setup tool, see Tableau Server in a Container - Using the Setup Tool.

Limitations

  • Tableau Server in a Container only supports license activation using Server ATR, which requires the container to have internet access. Therefore, offline activation in an air-gapped environment is not possible.
  • Tableau Server in a Container does not currently support the Resource Monitoring Tool (RMT) agent.
  • Kerberos is not supported in Tableau Server in a Container.

Tableau Server in a Container - Quick Start Guide

This topic provides all of the steps required to perform a basic, quick start deployment of a Tableau Server in a Container Image using the command line. The purpose of the configuration described here is to provide the quickest, simplest path to a Tableau Server on Linux installation running inside a container. For a more in-depth look at what Tableau Server in a Container has to offer, see Tableau Server in a Container Setup Tool and Tableau Server in a Container Image.

Important: Do not use the following Quick Start procedure as a stand-alone resource for deploying Tableau Server in a production environment.

Before you begin

There are two basic steps required to use Tableau Server in a Container:

  1. Building the Docker image

    Building the Tableau Server in a Container Docker image is only supported on a RHEL-based Linux system (RHEL, CentOS, or Amazon Linux 2). Building on any other Linux distributions may be possible but is currently untested and unsupported. Building images on macOS is not supported. The image created is based on a CentOS 7.x image.

    You must use a distro that includes Docker version of 17 or later, with the latest version of Docker being preferred. Docker versions earlier than version 17 do not include features that are required for Tableau Server in a Container.

  2. Running the Docker image

    Production use of Tableau Server in a Container is only supported on Linux. For exploratory prototyping and testing work, any system that can run Linux-based Docker images should be able to run Tableau Server in a Container images (assuming it satisfies the hardware and operating systems requirements outlined in Before you install...).

    Tableau Server in a Container images require the same hardware resources as Tableau Server itself in order to run. For production deployments, follow the recommendations shown in Minimum production hardware recommendations. For exploratory work, follow the recommendations shown for Minimum hardware requirements for installation. If you are deploying in a public cloud environment, see the links at the bottom of the Minimum Hardware Requirements and Recommendations for Tableau Server page for detailed recommendations on instance sizing. If using Docker Desktop on Windows or macOS for exploratory work, note that the default resource limits for containers are set far below the minimum requirements and will need to be increased to run the container successfully.

Note: Tableau Support cannot help with issues on unsupported platforms or configurations.

The steps below assume that you have a Linux system with Docker installed and you have downloaded the Tableau Server in a Container Setup Tool and a version compatible Tableau Server RPM installer.

  1. Untar the Tableau Server in a Container Setup Tool

    The Tableau Server in a Container Setup Tool will be available as a tarball. To unpack the tar archive, simply use the following command:

    tar -xzf tableau-server-container-setup-tool-<VERSION>.tar.gz
  2. Edit the registration file to provide your unique identifying information needed to register Tableau Server in accordance with the End User License Agreement. The file, reg-info.json, serves as a template for your required, uniquely identifiable registration information and is located in the top directory of the Tableau Server in a Container Setup Tool. This file is used to register the Tableau Server instance running in the image. Providing accurate information will ensure the registration process completes properly.

    The eula field value is pre-filled with "accept" to indicate you are accepting our End User License Agreement (EULA). You can view the EULA in the EULA directory of the build tool. As outlined in the EULA, you must submit a uniquely identifiable user registration when activating Tableau Server. When you are done editing the registration file, the other fields should have values that reflect your unique information. This file is used to register the Tableau Server instance running in the image. Providing accurate information will ensure the registration process completes and your submission meets the requirements of the license grant.

    Note: You must accept the EULA to use Tableau Server. If you do not accept the EULA, you cannot run Tableau Server.

    The registration file template reg-info.json before editing:

    {
    "zip" : "<value>",
    "country" : "<value>",
    "city" : "<value>",
    "last_name" : "<value>",
    "industry" : "<value>",
    "eula" : "accept",
    "title" : "<value>",
    "phone" : "<value>",
    "company" : "<value>",
    "state" : "<value>",
    "department" : "<value>",
    "first_name" : "<value>",
    "email" : "<value>"
    }
  3. Build the Tableau Server in a Container Image

    Run the build-image script in the Tableau Server in a Container setup tool

    ./build-image --accepteula -i <Tableau Server Installer>.rpm
  4. Run the Tableau Server in a Container Image

    1. Execute the Docker run command with all arguments filled out. You will need to provide the following information in the command line:

      • License key or license key file
      • Username and password for a new initial admin account (you will use this to sign into Tableau Server after it starts)
      • A static (internal) host name for computer
      • Name of the Tableau Server in a Container image
    2. When you have collected this information run this docker command on a minimum-spec host:

      docker run \
      -e LICENSE_KEY=<key> \
      -e TABLEAU_USERNAME=<username> \
      -e TABLEAU_PASSWORD=<password> \
      --hostname=<static (internal) name of host machine> \
      -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
    3. After 10-20 minutes Tableau Server will be initialized.
  5. Access Tableau Server

    When Tableau Server is completely initialized, check that the server is running properly by opening a web browser and going to http://<hostname>:8080 where <hostname> is the host name of the machine running the image.

You should have a running instance of Tableau Server in a Docker container at this point. For more advanced and customized deployments use the documentation below to guide you.

Deployment Configuration Examples

Docker

Tableau Server in a Container Basic Usage
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
Tableau Server in a Container Basic Usage with Automated Initial Admin User
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 only mode
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Multi-Node Basic Usage
Initial Node

Option 1: Use this if the server configuration (CONFIG_FILE) specifies a multi-node topology:

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>

Option 2: Use this if you want a multi-node deployment even if server configuration does not specify multi-node topology:

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>
Additional node
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>
Externalize Data Usage
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>
Init-Container Basic Usage

Init Container

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>

Run Container

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>
Basic Restore from Backup Single-Node
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>

 

 

Thanks for your feedback!