赞
踩
参考文献:
https://blog.csdn.net/Ber_Bai/article/details/116572207
https://www.cnblogs.com/wjw1014/p/12149399.html
https://blog.csdn.net/weixin_43956484/article/details/116499061
docker search mysql
docker pull mysql:5.7
上图是已经拉取过 拉取第二次的结果。
先第一次启动
- docker run -d \
- -p 3306:3306 \
- --name mysql \
- -e MYSQL_ROOT_PASSWORD=123 \
- mysql:5.7
-
- docker exec -it mysql bash
-
- mysql -uroot -p
- # Enter password:
-
- # mysql> show variables like '%datadir%';
- show variables like '%datadir%';
show variables like '%datadir%';会输出数据文件的存放路径 /var/lib/mysql/
拷贝容器配置文件
docker cp mysql:/etc/mysql /usr/local/mysql/conf
mysql容器的配置文件存在 /etc/mysql 下
docker stop mysql
docker rm mysql
- # 宿主机创建数据存放目录映射到容器
- mkdir -p /usr/local/docker_data/mysql/data
-
- # 宿主机创建配置文件目录映射到容器
- mkdir -p /usr/local/docker_data/mysql/conf #(需要在此目录下创建"conf.d"、"mysql.conf.d"两个目录)
- mkdir -p /usr/local/docker_data/mysql/conf/conf.d # (建议在此目录创建my.cnf文件并进行相关MySQL配置)
- mkdir -p /usr/local/docker_data/mysql/conf/mysql.conf.d
-
- # 宿主机创建日志目录映射到容器
- mkdir -p /usr/local/docker_data/mysql/logs
- docker run \
- -d \
- --privileged=true \
- -p 3306:3306 \
- --name mysql \
- -v /usr/local/docker/mysql/conf/mysql:/etc/mysql \
- -v /usr/local/docker/mysql/data:/var/lib/mysql/ \
- -v /usr/local/docker/mysql/logs:/var/log/mysql/ \
- -e MYSQL_ROOT_PASSWORD=123456 \
- --restart always \
- mysql:5.7 \
- --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
注解:
docker run | run 是运行一个容器 |
-d \ | 表示后台运行 |
--privileged=true \ | 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆 |
-p 3306:3306 \ | 端口映射(宿主机端口:容器端口) |
--name mysql \ | 容器名称 |
-v /usr/local/docker/mysql/conf/mysql:/etc/mysql \ | 容器MySQL配置目录映射(宿主机:容器) |
-v /usr/local/docker/mysql/data:/var/lib/mysql/ \ | 容器MySQL数据目录映射(宿主机:容器) |
-v /usr/local/docker/mysql/logs:/var/log/mysql/ \ | 容器MySQL日志目录映射(宿主机:容器) |
-e MYSQL_ROOT_PASSWORD=123456 \ | 容器的环境变量(root账号初始化密码) |
--restart always \ | 表示docker启动,nysql也会启动。 |
mysql:5.7 \ | 指定docker镜像 (可以是镜像名称或者镜像ID) |
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci | 设值数据库默认编码 |
- run run 是运行一个容器
- -d 表示后台运行
- -p 表示容器内部端口和服务器端口映射关联
- --privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
- -v /usr/local/docker/mysql/conf/mysql:/etc/mysql 将服务器中的配置映射到docker中的/docker/mysql配置
- -v /usr/local/docker/mysql/data:/var/lib/mysql/ / 同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
- -e MYSQL_ROOT_PASSWORD=123456 设置MySQL数据库root用户的密码
- --name mysql 设值容器名称为mysql
- --restart always 表示docker启动,nysql也会启动。
- mysql:5.7 表示从docker镜像mysql:5.7中启动一个容器
- --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码
docker exec -it mysql5.7 bash
mysql -u root -p
- # 创建用户并开启远程登录
- CREATE USER '你的账号'@'%' IDENTIFIED BY '你的密码';
- # 创建数据库并设置字符集
- CREATE DATABASE `库名` CHARACTER SET 'utf8mb4';
- # 给账号授权数据库
- GRANT ALL PRIVILEGES ON 库名.* TO '你的账号'@'%';
- # 删除容器(参数可以是容器名称或容器ID)
- docker rm mysql5.7
- # 删除镜像
- docker rmi mysql5.7
- # 启动容器
- docker start mysql5.7
- # 启动容器/重启容器
- docker restart mysql5.7
- # 停止容器
- docker stop mysql5.7
- # 进入容器
- docker exec -it mysql5.7 bash
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。