创建配置文件,数据目录

mkdir -p /opt/docker/mysql/conf
mkdir -p /opt/docker/mysql/data

编写配置文件

vim /opt/docker/mysql/conf/my.cnf
##################################################
[client]

#socket = /opt/docker/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file = /opt/docker/mysql/mysqld/mysqld.pid
#socket = /opt/docker/mysql/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid

datadir = /opt/docker/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
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/

##################################################

拉mysql镜像,启动容器

docker pull mysql:latest

docker run \
--name mysql8 \
--restart=unless-stopped \
-it -p 3306:3306 \
-v /opt/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /opt/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

进入容器进入mysql配置密码

docker exec -it mysql8 /bin/bash
mysql -u root -p
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;