亲测的运行容器命令sudo docker run -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -di 95e0fc47b096 带上-v进行目录映射时会出现状态为exit通过docker logs containerId查看日志显示:
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
第一步:搜索mysql 镜像文件
docker search mysql
这里面都是按照 星级 排序的,我们用最高的那一个就可以了
第二部:下载mysql的镜像文件
直接输入:sudo docker pull docker.io/mysql:5.7 会默认的下载最新的mysql
下载完了,我们查看一下,镜像文件
可以发现 ,我们的服务器里,已经有了 mysql这个镜像文件了,接下来,我们要去启动这个镜像文件
让mysql的服务跑起来 mkdir -p /mysql/{data,logs,conf} cd mysql
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 8d99edb9fd40
命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d 运行后输出 容器id
完成启动之后可用命令 : docker ps 查看正在运行的容器
下面列出一些常用的命令:
$ docker ps // 查看所有正在运行容器
$ docker stop containerId // containerId 是容器的ID
$ docker ps -a // 查看所有容器
$ docker ps -a -q // 查看所有容器ID
$ docker stop $(docker ps -a -q) // stop停止所有容器
$ docker rm $(docker ps -a -q) // remove删除所有容器 ,单个删除直接 :docker rm containerId
$ docker rmi ee633f5d1d11 :这个是用来删除镜像的 后面的是镜像id,删除的镜像的时候要注意,必须先停止容器,然后删除容器,然后删除镜像
这个时候 我可以用一些可视化工具去连接这个mysql 数据库了
如果出现图示的错误, 解决方法:
authentication plugin cachin_sha2_pawwword canot be loaded
1:进入容器 :docker exec -it pwc-mysql /bin/bash
2:mysql -uroot -p -h localhost
紧接着会要你输入面,就输入你刚才运行这个容器的时候
-e MYSQL_ROOT_PASSWORD=123456 : 输入 123456 即可
3:修改一个密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
再次 用 可视化 客户端连接 ,就可以了
退出 mysql交互界面 :exit
到此,mysql的 安装 和启动就基本上完成了,但是这里要注意的是这里使用的是mysql官方的镜像文件,会带来好多问题
可以参考:https://www.cnblogs.com/cfrost/p/6241892.html