Virtuoso Enterprise Edition Docker -- Quick Start Guide

OpenLink Virtuoso Enterprise Edition 8.3 Docker Image

Copyright (C) 2020 OpenLink Software

QuickStart Guide

Choosing an image

We’ve put together three Docker Images to choose from. The Enterprise Edition images require a version-matched license file (about which more details are below), just as if you were running on a local machine or in the cloud; the Open Source (“VOS”) image does not.

The remainder of this article is focused on the first of these (Enterprise Edition 8.2); most of the content applies to all three, with minor, hopefully obvious, adjustments.

Downloading the image

To pull the latest Virtuoso 8.2 docker image to your local system, you can use the following command:

$ docker pull openlink/virtuoso-closedsource-8

To check the version of the Virtuoso binary, you can use the following command:

$ docker run openlink/virtuoso-closedsource-8 version

This Docker image is using the following version of Virtuoso:

OpenLink Virtuoso Universal Server (Enterprise Edition)
Version 08.03.3319-pthreads as of Sep  9 2020 (b5a3cfa1e0)
Compiled for Linux (x86_64-generic-linux-glibc25)
Hosted Runtime Environments:  VDB
Copyright (C) 1998-2020 OpenLink Software

Creating a sample Virtuoso instance

Here is a quick example of how to create a new virtuoso instance on your system:

$ mkdir my_virtdb
$ cd my_virtdb
$ docker run \
    --name my_virtdb \
    --interactive \
    --tty \
    --env DBA_PASSWORD=mysecret \
    --publish 1111:1111 \
    --publish  8890:8890 \
    --volume `pwd`:/database \
    openlink/virtuoso-closedsource-8:latest

This will create a new Virtuoso database in the my_virtdb subdirectory and starts a Virtuoso instance with the HTTP server listening on port 8890 and the ODBC / JDBC / ADO.Net / OLE-DB / ISQL data server listening on port 1111.

The docker image in running in foreground (with -i or --interactive) mode, so you can see what it is doing.

You should now be able to contact the Virtuoso HTTP server using the following URL:

http://localhost:8890/

You can shut down Virtuoso by pressing the CTRL and C buttons in that terminal session.

Licensing

If the Virtuoso Enterprise Edition binary cannot find a license, it will start with a restrictive courtesy license license which allows a small number of concurrent ODBC / JDBC / ADO.Net / OLE-DB / ISQL connections, with a low limit on the maximum number of rows that can be retrieved in a query result-set, and terminates the instance after 10 minutes of use.

To unlock the full potential of Virtuoso, you can obtain a FREE Evaluation License via our License Generator Web Service.

Naturally, following successful evaluation, you can choose from a variety of Enterprise Edition licenses from our online shop or contact us (or your account manager) directly for more specialized Enterprise and/or VAR/ISV/OEM licenses.

Place the resulting virtuoso.lic file in the newly created database/ directory alongside the virtuoso.ini on your local filesystem, so the docker image can pick it up on the next startup:

$ docker cp virtuoso.lic my_virtdb:/database
$ docker stop my_virtdb
$ docker start my_virtdb

Passwords

When a new database is created, the docker image will use the Environment settings DBA_PASSWORD and DAV_PASSWORD to set passwords for the dba and dav user accounts.

If the DBA_PASSWORD environment variable is not set, a random password will be assigned to the dba user account, and stored on the internal docker filesystem as /settings/dba_password.

If the DAV_PASSWORD Environment variable is not set, it will be set to the DBA_PASSWORD and stored as /settings/dav_password.

These files will only be readable by the user that started the image. Commands like the following may be used to reveal the randomised passwords:

$ docker exec -i -t my_virtdb cat /settings/dba_password

Without this password, you will not be able to log in to the dba account using either the isql tool or the Virtuoso Conductor.

NOTE: Users are advised to immediately change the password and then remove this file from the filesystem.

Persistent storage

In order to retain changes to the Virtuoso database, the database documents should be stored on the host file system.

The docker image exposes a /database volume that can be easily mapped to a local directory on the filesystem. If this directory is empty, the docker image will put an initial virtuoso.ini into the mapped directory and then proceeds to create a new database.

Stopping the image

When the docker image is running in foreground mode (with -i or --interactive), you can shut down Virtuoso by pressing the CTRL and C buttons in that terminal session. You can also use the following command on a different terminal:

$ docker stop my_virtdb

Restarting the image

Once the docker image has been registered with the docker run or docker create command on your local system, you can start it in the background using:

$ docker start my_virtdb

If you prefer to run the instance in foreground mode, you can use:

$ docker start -i -a my_virtdb

Checking the startup log

If the docker image is started in background (without -i or --interactive) mode, you can look at the recent output of the virtuoso process by running:

$ docker logs my_virtdb

Using isql to connect

To connect to your running Virtuoso instance, you can use the following command:

$ docker exec -i my_virtdb isql 1111

You will be prompted for the dba account password.

NOTE: If you provide an incorrect password multiple times, Virtuoso will lock the dba account for a couple of minutes.

Using an existing database

If the mapped directory contains a virtuoso.ini and accompanying database documents, the new docker image will attempt to use these.

NOTE: Directory paths referenced in the virtuoso.ini should be relative to the internal directory structure of the docker image in order to work.

Related