docker安装mysql8

一、下载镜像

# 查找镜像
docker search mysql  # mysql

# 下载镜像 https://hub.docker.com/ docker 官方搜索查看有哪些 mysql 镜像版本
docker pull mysql:8.0.27

# 查看已下载镜像
docker images

二、创建相关目录

宿主机创建相关

mkdir -p /home/docker/mysql/mysql8/conf      # 配置文件目录
mkdir -p /home/docker/mysql/mysql8/data      # 数据目录
mkdir -p /home/docker/mysql/mysql8/log       # 日志目录

宿主机新增配置文件

# 配置文件
vim /home/docker/mysql/mysql8/conf/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
[client]
default-character-set = utf8mb4

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

# 限制导入导出文件目录的, 可自行搜索, 我暂时没有用到过, 下面这样表示不限制目录
secure-file-priv =

character_set_server = utf8mb4
collation_server = utf8mb4_bin
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/

# 这里是配置加密方式的
# 启动警告 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
default_authentication_plugin= mysql_native_password

三、创建并运行容器

docker run \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root \
    -v /home/docker/mysql/mysql8/data:/var/lib/mysql:rw \
    -v /home/docker/mysql/mysql8/log:/var/log/mysql:rw \
    -v /home/docker/mysql/mysql8/conf/my.cnf:/etc/mysql/my.cnf:rw \
    -v /etc/localtime:/etc/localtime:ro \
    --name mysql801 \
    --restart=always \
    -d mysql:8.0.27


-p 3306:3306                                                    : 端口映射, 前宿主机后容器
-e MYSQL_ROOT_PASSWORD=root                                     : 指定数据库root用户的密码
-v /home/docker/mysql/mysql8/data:/var/lib/mysql:rw             : 容器目录与宿主机目录的映射/挂载, 后面是指定读写权限
-v /home/docker/mysql/mysql8/log:/var/log/mysql:rw              : 同上
-v /home/docker/mysql/mysql8/conf/my.cnf:/etc/mysql/my.cnf:rw   : 同上
-v /etc/localtime:/etc/localtime:ro                             : 时区文件
--name mysql8                                                   : 容器名称
--restart=always                                                : docker重启时容器也重启, 类似开机启动的意思
-d mysql:8.0.27       

查看日志

docker logs 容器ID/容器名称
docker logs mysql801

登录容器

docker exec -it 容器ID/容器名称 /bin/bash
docker exec -it mysql801 /bin/bash
原文地址:https://www.cnblogs.com/chenxingyang/p/15780184.html