1、查看可用的 MySQL 版本
访问dockerhub镜像站中MySQL地址:https://hub.docker.com/_/mysql
2、拉取 MySQL 镜像
这里我们拉取指定版本镜像
# docker pull mysql:8.0.33
创建映射挂载目录并运行容器
创建挂载目录
# mkdir /data/mysql
# mkdir /data/mysql/data
创建配置文件
# vi /data/mysql/my.cnf
my.cnf文件内容
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
运行容器
查看镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.33 8189e588b0e8 4 days ago 564MB
运行容器
# docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=****** -v /data/mysql/my.cnf:/etc/mysql/my.cnf:rw -v /data/mysql/data:/var/lib/mysql --name mysql8 --restart=always -itd mysql:8.0.33
参数解析
参数 | 含义 |
--restart=always | 当 Docker 重启时,容器自动启动 |
--name | 起别名 |
-p 3306:3306 | 映射端口 |
-v | 目录挂载 |
-itd mysql:8.0.33 | 指定运行版本,后台运行并可控制台接入 |
-e MYSQL_ROOT_PASSWORD=‘密码’ | 设置root用户密码 |
进入MySQL控制台
查看运行容器
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b34460404e7f mysql:8.0.33 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql8
进入容器
# docker exec -it b34460404e7f /bin/bash