Skip to main content

Chapter 14: Installing Docker and MariaDB

In this chapter, we’ll install Docker on an Oracle Linux 7 (ARM) server and launch a MariaDB container. This MariaDB instance will serve as the centralized database for all compatible applications —applications, simplifying management.

Install Docker on Oracle Linux 7 (ARM)

Run the following commands:

  • Update System Packages
sudo yum update -y
  • Install Yum Config-manager
yum install -y yum-utils
  • Add Docker repository to Oracle Linux and Update Repo
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum update
  • Command to install Docker-Ce on Oracle Linux
sudo yum install docker-ce docker-ce-cli containerd.io
sudo yum-config-manager --enable ol7_developer
  • change docker.sock permission, docker.sock lets the Docker client talk to the Docker daemon to manage containers, images, and other features.
ls -l /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock
  • Enable and start docker service
sudo systemctl stop docker
sudo systemctl enable docker
sudo systemctl start docker
  • add the user and group that will run the Docker services.
# Create a new user
sudo adduser dockeruser

# (Optional, usually already exists)
sudo groupadd docker

# Add user to Docker group
sudo usermod -aG docker dockeruser

# Confirm group membership
groups dockeruser
  • give the sudo permissions to dockeruser
visudo
dockeruser ALL=(ALL) NOPASSWD:ALL

Installing MariaDB

Step 1: Create a Docker Network

docker network create dockerlab-network

Step 2: Create a Persistent Volume for MariaDB Data

docker volume create dockerlab-mariadb-data

Step 3: Run the MariaDB Container

docker run -d \
  --name dockerlab-mariadb  \
  --network dockerlab-network  \
  -e MARIADB_ROOT_PASSWORD=mysecretpassword \
  -e MARIADB_DATABASE=bookstackapp \
  -e MARIADB_USER=myuser \
  -e MYSQL_PASSWORD=mypassword \
  -v mariadb-data:/var/lib/mysql \
arm64v8/mariadb:latest


docker exec -it dockerlab-mariadb bash

Step 4: Connect Applications to MariaDB

Any container on the same dockerlab-network network can now connect using:

  • Host: mariadb (the container name)
  • User/Password: as set above
  • Database: myappdb

Example using another container (e.g., bookstackapp):

Your app can now reach MariaDB at mariadb:3306.

Step 5: (Optional) Check Container Logs

To make sure everything is running properly:

docker logs mariadb


Step 6: Example for docker-compose.yml

version: '3.8'

services:
  mariadb:
    image: mariadb:latest
    container_name: mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: mysecretpassword
      MYSQL_DATABASE: myappdb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    volumes:
      - mariadb-data:/var/lib/mysql
    networks:
      - shared-net

  myapp:
    image: myapp-image
    container_name: myapp
    restart: unless-stopped
    depends_on:
      - mariadb
    networks:
      - shared-net
    # environment:
    #   - DB_HOST=mariadb
    #   - DB_USER=myuser
    #   - DB_PASSWORD=mypassword
    #   - DB_NAME=myappdb

volumes:
  mariadb-data:

networks:
  shared-net:
    driver: bridge

Run the services:

docker-compose up -d

To check the status or logs:

docker-compose ps
docker-compose logs mariadb