What is IBM DB2 Express-C ?
``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a simple, flexible, powerful, and reliable relational database server. It is easy to install, embed, deploy, and available for download, deployment, and redistribution at no charge
- Uses Time Travel Query to provide bi-temporal data management.
- Delivers an integrated tools environment with IBM Data Studio for easier management and development.
- Includes Graph Store technology to efficiently store graph triples for reduced costs and enhanced performance.
- Contains the SQL Compatibility feature making it easier to run applications written for other major databases, on DB2.
IBM DB2 Express-C is available for download and deployment at no charge. Optional yearly subscription is available for users who require technical support or additional functionality, such as High Availability, Row and Column Access Control and SQL Replication.
The supported tags stands for
<db2 version> - <Linux kernel version of Docker Engine>.
DB2 Docker images can be deployed on a Docker Engine with any flavour of Linux , as long as it has the compatible Linux ``kernel-3.10.0
, likeCentOS 7``` respectively.
- Please make sure your Docker Engine has a compatible Linux kernel
- Please use
Docker 1.6.0 or later releaseon Ubuntu Docker Engine or Boot2Docker since there is a known issue with [aufs and direct io] (https://github.com/docker/docker/pull/10534)
Set up Docker environment on your laptop
How to use this image ?
This docker image has to be deployed to Docker Engine on one of supported Cloud providers or your own system. The instructions for creating Docker Engine vary by Cloud provider. We recommend to use [Docker Machine (beta)] (https://docs.docker.com/machine/) to provision Docker Engine.
In order to use the image, it is necessary to accept the terms of the DB2 Express-C license. This is achieved by specifying the environment variable LICENSE equal to accept when running the image.
This docker image contained pre-deployed DB2 Express-C with the default DB2 instance,
1 - Start a container
docker run -it -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1-pwd -e LICENSE=accept ibmcom/db2express-c:latest bash
-p 50000:50000exposes port
50000to allow connections from the remote client.
- By specifying
-e DB2INST1_PASSWORD=db2inst1-pwdparameter, you set a password of your choice for the
db2inst1user for the default DB2 instance.
- By specifying
-e LICENSE=acceptparameter, you are accepting this License to use the software contained in this image.
2 - Start DB2 and create sample DB
Please switch to the default db2 instance user
db2inst1 to start DB2 instance and create a sample database if you want :
$ su - db2inst1 $ db2start $ db2sampl
- The time of creating a sample database depends on your system performance, which may take several minutes.
- You can create another database using
db2 create db <dbname>command.
3 - Note
1) Start as a daemon
You can start a container as a daemon with DB2 services up/running :
docker run -d -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1-pwd -e LICENSE=accept ibmcom/db2express-c:latest db2start
db2start, db2 services start automatically and remote client can connect to it at port
2) Mount a volume
While starting a Docker container, you can mount a volume from a directory on the Docker host like the following command :
docker run -it -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1-pwd -e LICENSE=accept -v $(pwd):/share ibmcom/db2express-c:latest bash
/share, referring to mount point at "/share" in the Docker.
$(pwd), the current directory on Docker host while running Docker command, which is mounted by Docker container. It can also be any existing directory on Docker host, like
- If you want to use the mounted volume for DB2 system or data storage, please update DB2 manager configuration according to IBM Knowledge Center
3) DB2 is deployed in the Docker Engine in:
The Dockerfile and associated scripts are licensed under the Apache License 2.0. DB2 Express-C is licensed under the IBM International License Agreement for Non-Warranted Programs. This license for DB2 Express-C can be found online. Note that this license does not permit further distribution.
Supported Docker versions
- This image is officially supported on Docker version 1.6.0.
- Support for older versions (down to 1.0) is provided on a best-effort basis.
- Zhong Yu (Leo) Wu (firstname.lastname@example.org)
- Emerging Technology Team (email@example.com), IBM Analytics Platform
Like this image? Give us a star at the top of this page!
@wzymaster Thanks I was able to succesfully pull the image and start container. I would like to know what are the license limits for DB2-express C.
Is it possible to auto create a database when starting a container?
@geeky18 you have clean up your local space used by docker before you run this.
When I pull the image I am getting following error: docker: write /var/lib/docker/tmp/GetImageBlob010066252: no space left on device. Can someone please help me !!
@lmnetsoft Maybe the container you create didn't start correctly, you can run docker logs 0bfab979e67e1e7398e49cf51e5ee2769de172ab446b206859d38c54db136c41 to check the failure log. This docker container need the docker daemon parameter --selinux--enabled=false to disable the selinux, otherwise it will failure to start.
I got the error when starting the container. I said:
[root@localhost kernel-2.6.32]# docker exec -it 0bfab979e67e1e7398e49cf51e5ee2769de172ab446b206859d38c54db136c41 bash
Error response from daemon: Container 0bfab979e67e1e7398e49cf51e5ee2769de172ab446b206859d38c54db136c41 is not running
I am running on db2 version v11.1_linuxx64_expc.tar.gz
Could someone have the same problem with me?
In order to use external mounted volume, you have to update both of instance and database path.
I set default database path to a mounted volume using following command:
db2 "update dbm cfg using dftdbpath /share/db2data immediate"
Setting the dftdbpath is successful but after that creating a new database in /share/db2data fails SQL1036C:
If anyone wants to use persistent storage , please check "mount a volume" section in the doc. to attach the external storage to DB2 in container
This container is great! Any chance of getting this updated to use the current version of DB2 Express-C? (11.1) There are some compatibility issues when trying to restore a DB from from 11.1 DB to my DB running in the container, and 10.5 is no longer available to install on my Linux machine to get the versions to match.