1. 程式人生 > 實用技巧 >Docker 安裝 MySQL

Docker 安裝 MySQL

Docker 安裝 MySQL

MySQL 是世界上最受歡迎的開源資料庫。憑藉其可靠性、易用性和效能,MySQL 已成為 Web 應用程式的資料庫優先選擇。

1、檢視可用的 MySQL 版本

訪問 MySQL 映象庫地址:https://hub.docker.com/_/mysql?tab=tags

還可以通過docker search mysql命令來檢視可用版本:

 1 root@xxxxxxxxxxxx:~# docker search mysql 
 2 NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
3 mysql MySQL is a widely used, open-source relation… 9945 [OK] 4 mariadb MariaDB is a community-developed fork of MyS… 3638 [OK] 5 mysql/mysql-server Optimized MySQL Server Docker images. Create… 725
[OK] 6 percona Percona Server is a fork of the MySQL relati… 508 [OK] 7 centos/mysql-57-centos7 MySQL 5.7 SQL database server 83 8
mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 75 9 centurylink/mysql Image containing mysql. Optimized to be link… 61 [OK] 10 bitnami/mysql Bitnami MySQL Docker Image 44 [OK] 11 deitch/mysql-backup REPLACED! Please use http://hub.docker.com/r… 41 [OK] 12 tutum/mysql Base docker image to run a MySQL database se… 35 13 prom/mysqld-exporter 31 [OK] 14 schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic backup… 30 [OK] 15 databack/mysql-backup Back up mysql databases to... anywhere! 30 16 linuxserver/mysql A Mysql container, brought to you by LinuxSe… 25 17 centos/mysql-56-centos7 MySQL 5.6 SQL database server 20 18 circleci/mysql MySQL is a widely used, open-source relation… 19 19 mysql/mysql-router MySQL Router provides transparent routing be… 16 20 arey/mysql-client Run a MySQL client from a docker container 14 [OK] 21 fradelg/mysql-cron-backup MySQL/MariaDB database backup using cron tas… 8 [OK] 22 openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 image… 6 23 devilbox/mysql Retagged MySQL, MariaDB and PerconaDB offici… 3 24 ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 2 [OK] 25 jelastic/mysql An image of the MySQL database server mainta… 1 26 widdpim/mysql-client Dockerized MySQL Client (5.7) including Curl… 1 [OK] 27 monasca/mysql-init A minimal decoupled init container for mysql 0

2、拉取 MySQL 映象

這裡我們拉取官方的最新版本的映象:

1 $ docker pull mysql:latest

我是安裝的mysql-5.7版本,所以使用命令docker pull mysql:5.7

 1 root@xxxxxxxxxxxxxxx:~# docker pull mysql:5.7
 2 5.7: Pulling from library/mysql
 3 bf5952930446: Pull complete 
 4 8254623a9871: Pull complete 
 5 938e3e06dac4: Pull complete 
 6 ea28ebf28884: Pull complete 
 7 f3cef38785c2: Pull complete 
 8 894f9792565a: Pull complete 
 9 1d8a57523420: Pull complete 
10 5f09bf1d31c1: Pull complete 
11 1591b28581e8: Pull complete 
12 96ef942f7603: Pull complete 
13 2e009731422e: Pull complete 
14 Digest: sha256:1a83136153b238b659b0887ceb4e08275473af1eab2e67de4c22b37c5f4130cd
15 Status: Downloaded newer image for mysql:5.7
16 docker.io/library/mysql:5.7

3、檢視本地映象

使用以下命令來檢視是否已安裝了 mysql:

1 root@xxxxxxxxxx:~# docker images
2 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
3 mysql               5.7                 d589ea3123e0        4 days ago          448MB

4、執行容器

安裝完成後,我們可以使用以下命令來執行 mysql 容器:

docker run -p 3306:3306  --restart=always  --privileged=true --name mysql -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7

命令說明:
-p 3306:3306:將容器的3306埠對映到主機的3306埠
-e MYSQL_ROOT_PASSWORD=123456:初始化root使用者的密碼
-d: 後臺執行容器,並返回容器ID

下面這兩行配置是掛載資料

-v /opt/mysql/data:/var/lib/mysql

掛載mysql配置檔案
-v /opt/mysql/my.cnf:/etc/mysql/my.cnf

my.cnf配置檔案新增以下內容:

[mysqld]
user=root
character-set-server=utf8
default_authentication_plugin=mysql_native_password
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1 #忽略表名大小寫

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

我沒有修改配置檔案以及掛載資料,所有啟動命令是:

1 docker run -itd -p 3306:3306 -v /etc/localtime:/etc/localtime --name mysql -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7
2 
3 
4 -itd 後臺執行容器
5 
6 
7 -v /etc/localtime:/etc/localtime 容器時間就是伺服器系統時間

5、安裝成功

通過docker ps命令檢視是否安裝成功:

1 root@xxxxxxxxxxxx:~# docker ps
2 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3 a0bfb8ab7ae7        mysql:5.7           "docker-entrypoint.s…"   9 minutes ago       Up 9 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql