Creating and managing a MariaDB Docker container
See MariaDB and Docker in action!
- Set up web-based developer environments locally, and connect MariaDB to VS Code Server, CloudBeaver, PHP/Laravel and phpMyAdmin, using a single docker-compose command and configuration file.
Sometimes we want to install a specific version of MariaDB, MariaDB Galera Cluster, or MaxScale on a certain system, but no packages are available. Or maybe, we simply want to isolate MariaDB from the rest of the system, to be sure that we won't cause any damage.
S virtual machine would certainly serve the scope. However, this means to install a system on the top of another system. It requires a lot of resources.
In many cases, the best solution is Docker. Docker is a framework that runs containers. A container is meant to run a specific daemon, and the software that is needed for that deamon to properly work. Docker does not virtualize a whole system: a container only includes the packages that are not included in the underlying system.
Docker requires a very small amount of resources. It can run on a virtualized system. It is used both in development and in production environments.
Downloading an image
You can download a MariaDB image for Docker from the official repository, or choose another image that better suits your needs. You can search Docker Hub (the official set of repositories) for an image with this command:
docker search mariadb <</docker>> Once you found an image that you want to use, you can download it via Docker. Some layers including necessary dependencies will be downloaded too. Note that, once a layer is downloaded for a certain image, Docker will not need to download it again for another image. For example, if you want to install the default MariaDB image, you can type: <<code>> docker pull mariadb
You will see a list of necessary layers. For each layer, Dockers will say if it is already present, or its download progress.
To get a list of installed images:
docker ps -a
Creating the container
An image is not a running process: it is just the software needed to be launched. To run it, we must create a container first. The command needed to create a container can usually be found in the image documentation. For example, to create a container for the official MariaDB image:
docker run --name mariadb-10.0 -e MYSQL_ROOT_PASSWORD=mypass -d mariadb
mariadb-10.0
is the name we want to assign the container. If we don't specify a name, an id will be automatically generated.
Docker will responde with the container's id. But, just to be sure that the container has been created and is running, we can get a list of running containers in this way:
docker ps <</code> We should get an output similar to this one: <<code>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 819b786a8b48 mariadb "/docker-entrypoint. 4 minutes ago Up 4 minutes 3306/tcp mariadb-10.0