- 下载镜像
sudo docker pull mysql:8.0.21 #若不指定版本,默认最新
- 创建实例并启动
sudo docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/conf:/etc/mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /home/mysql/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:8.0.21 #参数说明 #--name 为当前启动的容器起名 #-p:将容器的3306端口映射到主机的3306 #-v /mydata/mysql/conf:/etc/mysql 将配置文件挂载到主机 #-v /mydata/mysql/log:/var/log/mysql 将日志文件夹挂载到主机 #-v /mydata/mysql/data:/var/lib/mysql 将配置文件夹挂载到主机 #-e MYSQL_ROOT_PASSWORD=root 初始化root用户的密码 #-d 以后式运行 # mysql:8.0.21 用哪个镜像启动的容器 #\ 换行标志
- 查看启动状态
docker ps -a
bug调试
Exited(1)
输入docker info | grep "Docker Root Dir"
进入Docker Root Dir
文件夹下
查看其下的containers文件夹发现存在之前启动的序列号
输入docker ps -a
获取Container ID,输入docker logs -f -t -tail ContainerID
查看启动日志
当指定了外部配置文件与外部存储路径时,也需要指定 /var/lib/mysql-files的外部目录,
所以在 主机新建/home/mysql/mysql-files目录,
在启动容器时 需要加上
-v /home/mysql/mysql-files:/var/lib/mysql-files/
移除启动失败的容器
docker stop ContainerID
docker rm ContainID
重新启动,成功!
3. mysql配置
vi /mydata/mysql/conf/my.cnf
[client]
defualt-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:解决MYSQL连接慢的问题
在配置文件中加入如下,并重启mysql
[mysqld]
skip-name-resolve #跳过域名解析
重启mysql
docker restart mysql
进入容器内部
docker exec -it mysql /bin/bash
连接mysql
mysql -uroot -p
设置开机自启
docker update --restart=always mysql