Docker's method for creating the MySQL container


The purpose of this article is to create an image of MySQL and automatically start the MySQL service in the newly created container to accept external connections

Steps:

1. First create 1 directory and create 1 Dockerfile under the directory. The contents of the file are as follows

FROM centos:centos6
MAINTAINER Fanbin Kong "[email protected]"

RUN yum install -y mysql-server mysql

RUN /etc/init.d/mysqld start &&\
  mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\
  mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\
  mysql -u root -pletmein -e "show databases;"

EXPOSE 3306

CMD ["/usr/bin/mysqld_safe"]

2. Run the build command in the Dockerfile directory to generate the image file, using mysql_server as the image file name

sudo docker build -t mysql_server .

After running the build command, you can view it using “sudo docker images”.

3. Start the container

3.1 Start the container using the following command

sudo docker run --name=mysqlserver -d -P mysql_server

After starting the container, you can use “sudo docker ps” to view it. At this point, you can see that the contents of the PORTS column are “0.0.0.0:49153-” > 3306/tcp ”, port 3306 of the container will be mapped to port 49153 of the host machine, so we can connect through port 49153 of the host machine, such as:

mysql -h < The host machine > -u root -pletmein -P 49153

3.2 The following command can also be used when running the container

sudo docker run --name=mysqlserver -d -p 3306:3306 mysql_server

Port 3306 of the container is mapped to port 3306 of the host machine so that we can access mysql through port 3306 of the host machine

mysql -h < The host machine > -u root -pletmein

3.3 There is another case where, for security reasons, I only want the current host machine to have access to the mysql service, at which point we can

sudo docker run --name=mysqlserver -d -p 127.0.0.1 : 3306:3306 mysql_server