In this example, we are going to install MySQL on Ubuntu machine and run it as a foreground process.


Dockerfile


FROM ubuntu:16.04

RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server \
&& sed -i "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf \
&& mkdir /var/run/mysqld \
&& chown -R mysql:mysql /var/run/mysqld

VOLUME ["/var/lib/mysql"]

EXPOSE 3306

CMD ["mysqld_safe"]

Create image


ubuntu@xenial64:~$ docker build -t mysql_image .

Create container


ubuntu@xenial64:~$ docker run -i -t -d --name mysql_container mysql_image

Check container status


ubuntu@xenial64:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10f7f2a2600f mysql_image "mysqld_safe" 36 seconds ago Up 35 seconds 3306/tcp mysql_container

Test


ubuntu@xenial64:~$ docker exec -it mysql_container service mysql status

* /usr/bin/mysqladmin Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 5.7.21-0ubuntu0.16.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 1 min 53 sec

Threads: 1 Questions: 6 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.053