---
schema_version: "1"
id: 4e9726e787476ffae52cb2dcb24882d29650b2f1ca6a44c97f6434b46d5dabb6
title: Tableau Server in a Container
collection: tableau
version: current
locale: en-gb
portal_url: https://docs.salesforce.com/tableau/current/en-gb/server-linux/server-in-container.md
canonical_url: https://help.tableau.com/current/server-linux/en-gb/server-in-container.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 946e9e8f24c3e0ff1aa10ffc389cf3c73b64917631523933a980699d07c231b8
description: Overview and workflow for running Tableau Server in a container.
---
[Skip to main content](#main-content)

# Tableau Server in a Container

## 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 UBI 8 image and runs `supervisord` (instead of `systemd`) inside the container. When the container starts `supervisord`, it will immediately attempt to initialise 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 customise container images to include custom packages and artefacts. One of the primary functions of the tool is to build the container image and install custom data connectors.

## Limitations for Tableau Server in a Container

- Tableau Server in a Container only supports licence activation using Server ATR. Offline activation is not supported.
- 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.

To test out the Tableau Server in a Container Image quickly in a proof-of-concept scenarios, see [Tableau Server in a Container - Quick Start](https://help.tableau.com/current/server-linux/en-gb/server-in-container_quickstart.htm).

## Basic Workflow for Tableau Server in a Container

Here is the basic workflow for using Tableau Server in a Container. You can find detailed instructions for each step in the links.

1. Use the Setup Tool to create a custom image of Tableau Server in a Container. See [Tableau Server in a Container - Using the Setup Tool](https://help.tableau.com/current/server-linux/en-gb/server-in-container_setup-tool.htm).
2. Run the image you created to start and use Tableau Server in a Container. See [Tableau Server in a Container - Using an Image](https://help.tableau.com/current/server-linux/en-gb/server-in-container_image.htm).

## Tableau Server Feature Considerations

Some Tableau Server features work differently in containers. This section covers specific features that have special or different considerations in a container environment.

### Active Directory

#### Set AD Domain Controller

If you plan on using Active Directory as an Identity Store for Tableau Server web pages and sites, there is an additional consideration to account for. Tableau Servers running in Linux environments dynamically determine which AD Domain Controller to communicate with by examining their IP subnet. Containers can be assigned arbitrary IP addresses, and in this case Tableau Server will not necessarily be able to use its IP address to find an appropriate domain controller. For this reason it may be necessary to configure a specific domain controller/hostname for Tableau Server to communicate with. To do this follow these steps:

1. Determine which domain controller you want Tableau Server to use and get the hostname.
2. Set the configuration key `wgserver.domain.ldap.hostname` to the hostname using the standard Tableau Server Admin configuration options:
    
    - Set the value in the json configuration file `CONFIG_FILE`.
    - Use the TSM configuration command
        
        tsm configuration set -k wgserver.domain.ldap.hostname -v <hostname>

#### Import AD certificate to Tableau Server Keystore

By default Tableau Server in a container communicates with AD via StartTLS whenever simple bind is used. So when the container is run in this configuration, it is necessary to import the AD server certificate to the Tableau Server Keystore, otherwise, server initialisation will fail. To do this follow these steps:

1. Create a `pre-init-command` script (check Pre-initialisation script section). Add the following line to add the AD certificate to tableau server keystore.
    
    ${INSTALL\_DIR}/packages/repository.${SERVICE\_VERSION}/jre/bin/keytool -importcert -noprompt -alias startTlsCert -file <mounted-certificate-path> -storetype JKS -storepass changeit -keystore ${DATA\_DIR}/config/tableauservicesmanagerca.jks
2. Mount the AD server certificate at the file path provided for `-file` parameter in the `pre-init-command` script.

Alternatively, the default setting to communicating with AD via StartTLS can be disabled. Set `wgserver.domain.ldap.starttls.enabled` to `false` to disable the StartTLS. But it is not recommended.

**Note:** For an example configuration entity with AD, see [LDAP - Active Directory](https://help.tableau.com/current/server-linux/en-gb/entity_identity_store.htm#LDAP).

### 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>

##### Externalise 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 \\  
\-v <full-path-to-identity-store-config-only-file>:/docker/config/identity-store-config.json \\  
\-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>

## Other articles in this section