Running MySQL with Docker on CentOS
A step-by-step guide to installing Docker and Docker Compose on CentOS and running a MySQL 5.7 container with persistent data and configuration.
Running MySQL with Docker on CentOS
A step-by-step guide to installing Docker and Docker Compose on CentOS and running a MySQL 5.7 container with persistent data and configuration.
Victory
Environment
- CentOS 7.3 (64-bit)
Install Docker
1. Remove Old Versions
yum remove docker docker-common docker-selinux docker-engine2. Set Up Docker Repository
2.1 Install Required Packages
yum install -y yum-utils device-mapper-persistent-data lvm22.2 Add Docker CE Stable Repository
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3. Install Docker CE
3.1 Update yum Cache
yum makecache fast3.2 Install Latest Docker CE
yum -y install docker-ce3.3 (Optional) Install a Specific Version
yum list docker-ce.x86_64 --showduplicates | sort -r
yum install docker-ce-<VERSION>4. Start Docker
systemctl start docker5. Verify Installation
docker -v6. Uninstall Docker (Optional)
yum remove docker-ce
rm -rf /var/lib/dockerInstall Docker Compose
1. Download Docker Compose 1.14.0
curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose2. Make It Executable
chmod +x /usr/local/bin/docker-compose3. Verify Version
docker-compose -vRun MySQL with Docker
1. Pull Official MySQL Image
docker pull mysql:5.7.182. Start MySQL Container
docker run --name mysql_db -p 3306:3306 -v /home/docker/mysql/logs:/data/logs/mysql -v /home/docker/mysql/data:/var/lib/mysql -v /home/docker/mysql/conf/:/etc/mysql/conf.d -e MYSQL_DATABASE=opencart -e MYSQL_ROOT_PASSWORD=Ao@1234567890 -d mysql:5.7.18Parameter Explanation
-p 3306:3306– Port mapping--name mysql_db– Container name-v /home/docker/mysql/data:/var/lib/mysql– Persist MySQL data-v /home/docker/mysql/conf/:/etc/mysql/conf.d– Custom configuration-v /home/docker/mysql/logs:/data/logs/mysql– Persist logs-e MYSQL_DATABASE=opencart– Initialize database-e MYSQL_ROOT_PASSWORD=...– Set root password-d– Run in detached mode
Official image docs: https://hub.docker.com/_/mysql/
Sample my.cnf
# Error log
log-error=/var/log/mysql/error.log
# General query log
general_log=ON
general_log_file=/var/log/mysql/mysql.log
# Slow query log
slow_query_log=on
long_query_time=2
slow_query_log_file=/var/log/mysql/slowquery.logNote: Ensure log files exist and MySQL has write permissions, otherwise the container may fail to start.
Common Operations
View Logs
docker logs mysql_dbList Containers
docker ps
docker ps -aInstall MySQL Client
yum -y install mysqlConnect to MySQL
mysql -h 127.0.0.1 -uroot -pStop / Start Container
docker stop mysql_db
docker start mysql_dbUse MySQL from Another Container
docker run --name some-app --link mysql_db:mysql -d application-that-uses-mysqlSummary
Running MySQL in Docker provides:
- Easy setup and teardown
- Environment isolation
- Persistent data via volumes
This approach works well for development and small production setups.