Tags are separated in two groups:
the version corresponds to the version of the database that you want to get the image for. The
se are for the edition of the database - enterprise and standard.
Currently we provide the following versions -
What is GraphDB?
GraphDB is an enterprise ready Semantic Graph Database, compliant with W3C Standards. Semantic graph databases (also called RDF triplestores) provide the core infrastructure for solutions where modelling agility, data integration, relationship exploration and cross-enterprise data publishing and consumption are important.
GraphDB is the only triplestore that can perform semantic inferencing at scale allowing users to create new semantic facts from existing facts. It is proven to handles massive loads, queries and inferencing in real time.
For more information and related downloads for GraphDB Server and other GraphDB products, please visit http://graphdb.ontotext.com.
How to use this image
Start a graphdb server instance
Starting a GraphDB instance is simple:
docker run -p 127.0.0.1:7200:7200 --name graphdb-instance-name -t ontotext/graphdb:tag
graphdb-instance-name is the name you want to assign to your container,
tag is the tag specifying the GraphDB version you want. See the list above for relevant tags.
You can now go to http://localhost:7200 to see the database in action. Note that you will require a license to be able to use the database.
Container shell access and viewing GraphDB logs
docker exec command allows you to run commands inside a Docker container. The following command line will give you a bash shell inside your
docker exec -it graphdb-instance-name bash
The GraphDB logs is available through Docker's container log:
docker logs graphdb-instance-name
or to monitor logs as they come
docker attach graphdb-instance-name
Passing custom options to GraphDB inside the container
The docker image makes this really easy, just pass them at the end of the run command. So for example if you want to specify the amount of memory for the the global cache, you can run
docker run -p 127.0.0.1:7200:7200 --name graphdb-instance-name -t ontotext/graphdb:tag -Dgraphdb.global.page.cache=3G
Where to Store Data
Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the
GraphDB images to familiarize themselves with the options available, including:
- Let Docker manage the storage of your database data by writing the database files to disk on the host system using its own internal volume management. This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers.
- Create a data directory on the host system (outside the container) and mount this to a directory visible from inside the container. This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly.
The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above:
- Create a data directory on a suitable volume on your host system, e.g.
graphdbcontainer like this:
docker run -p 127.0.0.1:7200:7200 -v /my/own/graphdb-home:/opt/graphdb/home --name graphdb-instance-name -t ontotext/graphdb:tag
-v /my/own/graphdb-home:/opt/graphdb/home part of the command mounts the
/my/own/graphdb-home directory from the underlying host system as
/opt/graphdb/home inside the container, where GraphDB by default will write its data files, logs and working files.
Note that users on host systems with SELinux enabled may see issues with this. The current workaround is to assign the relevant SELinux policy type to the new data directory so that the container will be allowed to access it:
chcon -Rt svirt_sandbox_file_t /my/own/graphdb-home
Give license to the images
All of the images require a proper license to be able to work. The manual way of providing the license is through the web interface after you access the database for the first time. But if you want to automate the process there are two recommended ways to do that.
provide the license in a virtual mounted home. On the host machine run
mkdir -p data/conf cp <path-to-license> data/conf/graphdb.license
now start the docker image with
docker run -p 127.0.0.1:7200:7200 -v data:/opt/graphdb/home --name graphdb-instance-name -t ontotext/graphdb:tag
extend the docker image and copy the license
FROM ontotext/graphdb:tag RUN mkdir -p /opt/graphdb/home/conf COPY <path-to-license-on-host-machine> /opt/graphdb/home/conf
now you can build an image from the Dockerfile and run it.
Supported Docker versions
This image is officially supported on Docker version 1.13.1.
Support for older versions (down to 1.6) is provided on a best-effort basis.
Please see the Docker installation documentation for details on how to upgrade your Docker daemon.
Contributing and development
Seee the github repository for the images if you want to contribute to this image