Linux中使用Docker部署Mysql数据库

重点

确保docker已经安装
如果没有安装请参照:linux部署docker步骤

1.检查docker是否运行

[root@localtion]$ sudo systemctl status docker
若没有运行则启动docker:
[root@localtion]$ sudo systemctl start docker

2.检索mysql镜像

[root@localtion]$ sudo docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   8679                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3023                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   642                                     [OK]
percona                           Percona Server is a fork of the MySQL relati…   453                 [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   63
centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   52
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      36                                      [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   34
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   28                                      [OK]
prom/mysqld-exporter                                                              23                                      [OK]
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   22
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   16
circleci/mysql                    MySQL is a widely used, open-source relation…   15
mysql/mysql-router                MySQL Router provides transparent routing be…   13
arey/mysql-client                 Run a MySQL client from a docker container      11                                      [OK]
imega/mysql-client                Size: 36 MB, alpine:3.5, Mysql client: 10.1.…   8                                       [OK]
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   4                                       [OK]
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]
genschsa/mysql-employees          MySQL Employee Sample Database                  2                                       [OK]
jelastic/mysql                    An image of the MySQL database server mainta…   1
monasca/mysql-init                A minimal decoupled init container for mysql    0
widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   0                                       [OK]

NAME:镜像名
DESCRIPTION:说明
STARS:热度
OFFICIAL:是否官方
AUTOMATED:是否自动

3.下载mysql镜像

[root@localtion]$ sudo docker pull mysql:5.7

#下载好后,可以检查是否已经下载成功:
[root@localtion]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     5.7                 383867b75fd2        4 weeks ago         373 MB

REPOSITORY:镜像名
TAG:标签,latest表示为最新的
IMAGE ID:镜像id
CREATED:创建时间
SIZE:大小
上图中表示mysql镜像文件已经下载成功

4.使用docker启动mysql数据库容器

[root@localtion]$  sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7
9836d9d04f41b51a6be7c9cdaceb4b1ce2496fcfe0e69d3b6455bc1cacaeb223

-v :指明挂在卷
–restart:自动重启
–name:给容器命名
-e:设置账号密码
-p: 指明宿主机端口:docker内部端口
-d:指明用什么镜像的id启动
c5244d16078bb224ce77c3e6446ab6466a95d5fe801b2269d4c00b0eb0d65319:启动的mysql容器的id

5.查看是否启动mysql数据库成功

 [root@localtion]$  sudo docke ps -l
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
 c5244d16078b        b8f                 "docker-entrypoint..."   3 minutes ago       Restarting (1) 6 seconds ago                       mysql

CONTAINER ID:容器id
IMAGES:镜像id
CREATED:创建时间
STATUS:状态
NAME:容器名
到此可知,mysql容器创建成功

6.设置mysql数据库的远程链接

1.进入mysql容器:
[root@localtion]$  sudo docker exec -it mysql bash
root@9836d9d04f41:/#
2.登陆mysql数据库:
root@9836d9d04f41:/# mysql -u root -p"root"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, 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.
mysql>
3.授权:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.01 sec)
4.重新授权表:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
5.退出:
mysql>exit

7.第三方工具连接mysql数据库

下载好第三方工具后,输入相关信息即可正常连接mysql数据库进行操作
地址:宿主机地址
端口:宿主机3306端口
账号:root
密码:root
推荐使用Mysql官方的Mysql Workbench

8.问题排查

若无法连通宿主机地址:端口,可能是因为防火墙没有关闭,可以用以下命令关闭防火墙
[root@localtion]$ sudo systemctl stop firewalld     #关闭防火墙
[root@localtion]$ sudo systemctl disable firewalld   #重启后也不开启防火墙
若必需打开防火墙,则使用防火墙单独打开3306端口即可
[root@localtion]$ : sudo firewall-cmd --zone=public --permanent --add-port=3306/tcp
[root@localtion]$ : sudo ffirewall-cmd --reload       永久开启3306端口

你可能感兴趣的:(Linux中使用Docker部署Mysql数据库)