# Clear Linux* OS `mariadb` container image ## What is this image? `clearlinux/mariadb` is a Docker image with `mariadb` running on top of the [official clearlinux base image](https://hub.docker.com/_/clearlinux). > [Mariadb](https://mariadb.com/) is a community-developed, commercially supported > fork of the MySQL relational database management system (RDBMS), intended to remain > free and open-source software under the GNU General Public License. Development is led > by some of the original developers of MySQL, who forked it due to concerns over its > acquisition by Oracle Corporation For other Clear Linux* OS based container images, see: https://hub.docker.com/u/clearlinux ## Why use a clearlinux based image? > [Clear Linux* OS](https://clearlinux.org/) is an open source, rolling release > Linux distribution optimized for performance and security, from the Cloud to > the Edge, designed for customization, and manageability. Clear Linux* OS based container images use: * Optimized libraries that are compiled with latest compiler versions and flags. * Software packages that follow upstream source closely and update frequently. * An aggressive security model and best practices for CVE patching. * A multi-staged build approach to keep a reduced container image size. * The same container syntax as the official images to make getting started easy. To learn more about Clear Linux* OS, visit: https://clearlinux.org. ## Deployment: ### Deploy with Docker The easiest way to get started with this image is by simply pulling it from Docker Hub. *Note: This container uses the same syntax as the [official mariadb image](https://hub.docker.com/_/mariadb). 1. Pull the image from Docker Hub: ``` docker pull clearlinux/mariadb ``` 2. Start a container using the examples below: ``` docker run --name clr-mariadbtest -e MYSQL_ROOT_PASSWORD=mypass -d clearlinux/mariadb # Get the mariadb server IP docker inspect clr-mariadbtest | grep IPAddress # Test it mysql -h $IP -u root -p ``` ### Deploy with Kubernetes This image can also be deployed on a Kubernetes cluster, such as [minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/).The following example YAML files are provided in the repository as reference for Kubernetes deployment: - [`mariadb-deployment.yaml`](https://github.com/clearlinux/dockerfiles/blob/master/mariadb/mariadb-deployment.yaml): example using default configuration with secret to create a basic Mariadb service. - [`mariadb-deployment-conf.yaml`](https://github.com/clearlinux/dockerfiles/blob/master/mariadb/mariadb-deployment-conf.yaml): example using your own custom configuration with secret to create a Mariadb service. Steps to deploy mariadb on a Kubernetes cluster: 1. Create secret for Mariadb service. ``` kubectl create secret generic mariadb \ --from-literal=mysql-root-password= \ --from-literal=mysql-user= \ --from-literal=mysql-password= ``` 2. If you want to deploy `mariadb-deployment.yaml` ``` kubectl create -f mariadb-deployment.yaml ``` Or if you want to deploy `mariadb-deployment-conf.yaml` ``` kubectl create -f mariadb-deployment-conf.yaml ``` 3. Install Mariadb bundle and connect to the service, where 30001 is the port number defined in your service. ``` swupd bundle-add mariadb mysql -h -u -p -P30001 ``` ## Build and modify: The Dockerfiles for all Clear Linux* OS based container images are available at https://github.com/clearlinux/dockerfiles. These can be used to build and modify the container images. 1. Clone the clearlinux/dockerfiles repository. ``` git clone https://github.com/clearlinux/dockerfiles.git ``` 2. Change to the directory of the application: ``` cd mariadb/ ``` 3. Build the container image: ``` docker build -t clearlinux/mariadb . ``` Refer to the Docker documentation for [default build arguments](https://docs.docker.com/engine/reference/builder/#arg). Additionally: - `swupd_args` - specifies arguments to pass to the Clear Linux* OS software manager. See the [swupd man pages](https://github.com/clearlinux/swupd-client/blob/master/docs/swupd.1.rst#options) for more information. - Environment Variables: ``MYSQL_ROOT_PASSWORD`` specifies MariaDB root password ## Container Image Size: Clear Linux enables the AVX2 instructions compile in default for many applications, including mariadb. With the two sets of binaries/libraries as below, this mariadb in Clear Linux can automatically and dynamically choose corresponding set to support different IA platforms. 1. SSE: ``` /usr/bin/mariadb /usr/bin/mariadb-access /usr/bin/mariadb-admin /usr/bin/mariadb-backup ... /usr/bin/mysql /usr/bin/mysql_client_test /usr/bin/mysql_config ... /usr/lib64/libmariadb.so /usr/lib64/libmariadbd.so /usr/lib64/libmariadbd.so.19 ... ``` 2. AVX/AVX2: ``` /usr/bin/haswell/mariadb /usr/bin/haswell/mariadb-admin /usr/bin/haswell/mariadb-backup /usr/bin/haswell/mariadb-binlog ... /usr/bin/haswell/mysql /usr/bin/haswell/mysql_client_test /usr/bin/haswell/mysql_ldb ... /usr/lib64/haswell/libmariadb.so /usr/lib64/haswell/libmariadbd.so /usr/lib64/haswell/libmariadbd.so.19 ... ``` ## Licenses All licenses for the Clear Linux* Project and distributed software can be found at https://clearlinux.org/terms-and-policies