Create a Persistent Tableau Server Docker Container in 30 minutes


  1. A linux machine you can use to build the container image. I have tested on both Amazon Linux 2 (RHEL/CENTOS based) and Ubuntu (incl. Ubuntu on Windows Subsystem for Linux — thanks Tim Payne!).
  2. Docker is installed and running on that machine
  3. A valid Tableau Server license
  4. ssh there and download the following:

Build the container:

  1. Uncompress the Container builder tool:
tar -xzf tableau-server-container-setup-tool-<VERSION>.tar.gz
"first_name" : "John",
"last_name" : "Smith",
"email" : "",
"company" : "Example, Inc",
"title" : "Head Cat Herder",
"department" : "Engineering",
"industry" : "Finance",
"company_employees" : "500",
"phone" : "123-555-1212",
"city" : "Kirkland",
"state" : "WA",
"zip" : "98034",
"country" : "United States",
"opt_in" : "true",
"eula" : "accept"
# Driver installation and other artifact installation script
mkdir -p /opt/tableau/tableau_driver/jdbc
cp /docker/customer-files/postgresql-42.3.3.jar /opt/tableau/tableau_driver/jdbc/postgresql-42.3.3.jaryum install -y /docker/customer-files/mysql-connector-odbc-8.0.26-1.el7.x86_64.rpm
./build-image --accepteula -i tableau-server-<VERSION>.rpm -e env.txt

Running the container

  1. Run this command to prepare the docker env that will be running the container:
sudo ./configure-container-host -u 999
docker volume create ts_container_data
docker run \
-e LICENSE_KEY=<lincense-key> \
-v ts_container_data:/var/opt/tableau \
-v <absolute-path>/remote-user-secret:/docker/config/remote-user-secret \
--hostname=localhost \
-p 8080:8080 \
-p 8850:8850 \
-d <container-image-id>
  • Sign in to the TSM Gui via browser: https://<container-ip-address>:8850
  • docker ps → show all running containers
  • docker ps -a → show all containers
  • docker logs <container-id> → did anything go wrong?
  • docker stats → see all the cpu/mem/etc from the varius running containers. If Tableau Server is initializing, you will see a lot of activity here.
  • docker exec -it <container-id> tsm status -v → check if Tableau is initializing or has initialized properly
  • docker exec -it <container-id> bash → now you are logged on the console of the container, so you can run any linux command, e.g. tsm status or even install db drivers.
  • docker exec -it <container-name> bash -c ‘cat $DATA_DIR/supervisord/run-tableau-server.log’ → this helps you check for errors during a fresh startup
  • Other files and troubleshooting ideas here on Tableau’s official manual.
docker run \
-v ts_container_data:/var/opt/tableau \
--hostname=localhost \
-p 8080:8080 \
-p 8850:8850 \
-d <container-image-id>
docker run \
-v ts_container_data:/var/opt/tableau \
-v {absolute-path}/remote-user-secret:/docker/config/remote-user-secret \
--hostname=localhost \
-p 8080:8080 \
-p 8850:8850 \
-d <container-image-id>



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store