一、拉取镜像
# 拉取镜像
docker pull mysql
# 或者
docker pull mysql:latest
# 以上两个命令是一致的,默认拉取的就是 latest 版本的
# 我们还可以用下面的命令来查看可用版本:
docker search mysql
二、查看镜像
docker images
三、运行镜像
- mysql 8.0以上的配置
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/conf:/etc/mysql/conf.d \ -v /etc/localtime:/etc/localtime:ro \ -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
mysql 5.7的配置
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
命令解释
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest。
四、查看正在运行的容器
# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a
如果有问题我们可以用该命令查看日志
docker logs -f mysql
五、修改mysql配置
创建mysql配置文件:my.cnf
cd /usr/local/mysql
ll
cd conf
vi my.cnf
在 my.cnf 文件中 写入如下内容:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'
# 设置密码验证规则,default_authentication_plugin参数已被废弃
# 改为authentication_policy
#default_authentication_plugin=mysql_native_password
authentication_policy=mysql_native_password
# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
skip-character-set-client-handshake
skip-name-resolve
六、启动容器内部mysql
docker exec -it mysql /bin/bash
6.1登入mysql
mysql -u root -p
输入密码123456
6.2选择数据库
show databases;
use mysql;
6.3查看用户连接情况
select host, user, plugin, authentication_string, password_expired from user;
6.4退出容器
exit
先输入exit退出mysql,再输入exit退出容器。
此时,我们通过客户端工具就可以连接mysql了。
七、停止正在运行的Docker容器及删除Docker容器
7.1停止正在运行中的docker进程
docker ps
[root@zgf ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f74c23ab333e mysql:latest "docker-entrypoint.s…" 43 minutes ago Up 43 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
执行以下命令停止进程
docker kill f74c23ab333e
查看结果
docker ps
结果如下
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7.2docker容器的删除
首先停止希望删除的容器(参考上述停止方法)
执行以下命令查看所有容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f74c23ab333e mysql:latest "docker-entrypoint.s…" 47 minutes ago Up 47 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
执行以下命令删除
docker rm f74c23ab333e
查看结果
docker ps -a
结果如下
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
删除成功