docker安装MySQL

Docker 装 MySQL

一、前置准备:设置 Docker 加速镜像

1. 操作步骤

  1. 进入 Docker 配置目录(无则创建):

    1
    
    cd /etc/docker
    
  2. 创建/编辑配置文件 daemon.json

    1
    
    vi daemon.json
    
  3. 写入以下加速镜像配置(JSON 格式):

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    
    {
      "builder": {
        "gc": {
          "defaultKeepStorage": "20GB",
          "enabled": true
        }
      },
      "experimental": false,
      "registry-mirrors": [
        "https://docker.hpcloud.cloud",
        "https://docker.m.daocloud.io",
        "https://docker.unsee.tech",
        "https://docker.1panel.live",
        "http://mirrors.ustc.edu.cn",
        "https://docker.chenby.cn",
        "http://mirror.azure.cn",
        "https://dockerpull.org",
        "https://dockerhub.icu",
        "https://hub.rat.dev"
      ]
    }
    

二、步骤1:拉取 MySQL 镜像

1. 拉取命令

1
2

docker pull mysql

2. 验证拉取结果

查看已拉取的镜像:

1
2

docker images

3. 预期输出示例

1
2
3
4
5

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    a830707172e8   4 weeks ago    192MB
mysql         latest    2c849dee4ca9   4 weeks ago    859MB
hello-world   latest    74cc54e27dc4   3 months ago   10.1kB

三、步骤2:配置 MySQL 并创建容器

1. 准备 MySQL 配置文件

创建配置文件 my.cnf(建议放在自定义目录,如 /gxp/dockersoft/mysql/conf),内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv=NULL

# 网络设置
bind-address = 0.0.0.0
port = 3306
skip-name-resolve

# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 日志设置
log-error = /var/log/mysqld.log
slow-query-log = 1
slow-query-log-file = /var/log/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes = 1

# InnoDB 设置(根据服务器内存调整)
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 4000
innodb_flush_method = O_DIRECT

# 连接设置
max_connections = 200
wait_timeout = 600
interactive_timeout = 600

# 查询缓存(建议生产环境关闭)
query_cache_type = 0
query_cache_size = 0

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

2. 创建并运行容器

(1)命令格式

1
2
3
4
5
6
7
8

docker run --name mysqlserver \
-p 3306:3306 \
-v $PWD/conf:/etc/mysql/my.cnf \
-v $PWD/data:/var/lib/mysql \
-v $PWD/logs:/var/log \
-e MYSQL_ROOT_PASSWORD=root \
mysql

(2)参数说明

参数 含义
--name mysqlserver 容器名称(自定义,如 mysqlserver)
-p 3306:3306 端口映射:主机 3306 端口 → 容器 3306 端口
-v 主机路径:容器路径 目录挂载(实现主机与容器文件同步,无需进入容器修改配置)
$PWD 当前命令执行目录(建议先 cd 到自定义目录,如 /gxp/dockersoft/mysql
-e MYSQL_ROOT_PASSWORD=root 设置 MySQL root 用户密码(自定义,如 root)

(3)推荐目录结构(示例)

1
2
3
4
5

/gxp/dockersoft/mysql/
├── conf/       # 挂载容器的 /etc/mysql/my.cnf(配置文件目录)
├── data/       # 挂载容器的 /var/lib/mysql(数据存储目录)
└── logs/       # 挂载容器的 /var/log(日志目录)

目录权限设置(可选):

1
2

chmod -R 777 /gxp/dockersoft/mysql

(4)挂载逻辑说明

Docker 容器内的配置/数据默认仅存储在容器中,通过 -v 挂载后:

  • 主机 conf 目录 → 容器 my.cnf 配置文件(修改主机文件即同步容器配置)

  • 主机 data 目录 → 容器数据目录(避免容器删除后数据丢失)

  • 主机 logs 目录 → 容器日志目录(方便在主机查看 MySQL 日志)

四、步骤3:连接 MySQL

容器启动后,可通过 Navicate、SQLyog 等工具连接:

  • 主机地址:Docker 所在服务器 IP

  • 端口:3306(已映射)

  • 用户名:root

  • 密码:root(创建容器时设置的密码)

五、Docker 常用命令

功能 命令
拉取镜像 docker pull 镜像名称(如 mysql)
查看所有已拉取镜像 docker images
查看所有容器(运行+停止) docker ps -a
启动容器 docker start 容器名称/ID
停止容器 docker stop 容器名称/ID
删除容器 docker rm 容器名称/ID
查看容器日志 docker logs 容器名称/ID
进入容器内部 docker exec -it 容器名称/ID /bin/bash
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计