流程:先使用快速启动,然后将配置文件本地化到自己创建的的本地化目录中,之后在docker-compose文件中配置挂载目录,之后通过docker-compose启动
一、快速启动版
- 拉取镜像
docker pull mysql:5.7 #拉取镜像
- 启动
docker run -itd --name mysql_01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
或者
docker run -d -p 3306:3306 --privileged=true -v /data/mysql/conf/my.cnf -v /data/mysql/data -e MYSQL_ROOT_PASSWORD='root123456' --name mysql01 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
- 命令介绍
-i: 交互式操作。
-t: 终端。
-d: 在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
–name: 容器名称(非必需)
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
e MYSQL_ROOT_PASSWORD=123456:指定环境变量,这里设置 MySQL 服务 root 用户的密码
- 检测是否安装并启动成功
docker ps
二、使用docker-compose安装
- 将快速启动中的目录复制到本地目录中
docker cp [容器id]:/var/lib/mysql /data/plugings/mysql/mysql5.7/
mv mysql lib
docker cp [容器id]:/etc/mysql /data/plugings/mysql/mysql5.7
mv mysql conf
- 自定义docker-compose.yml
version: "2"
services:
mysql:
container_name: mysql_01
restart: always
networks:
- resource_bridge
image: mysql:5.7 #拉取的镜像版本,也可替换成自己的镜像
#env_file:
#- ../env/mysql.env
environment:
MYSQL_ROOT_PASSWORD: "root123456" #数据库的密码,也就是root用户的密码
MYSQL_USER: 'test'
MYSQL_PASS: 'test123456'
volumes: #里面的参数为映射本地和docker容器里面的文件夹和目录
- /data/plugings/mysql/mysql5.7/lib:/var/lib/mysql
- /data/plugings/mysql/mysql5.7/conf:/etc/mysql/
ports: #映射端口
- "3306:3306"
networks: #自定义网络,用于通讯
resource_bridge:
external:
name: resource_bridge
- 启动mysql_5.7.yaml服务
docker-compose -f docker-compose.yml up -d #加上-d表示后台运行,不进入容器中
- 关闭服务
docker-compose -f docker-compose.yaml down
- 可以设置启动初始化脚本,在volumes下添加对应的脚本目录
- mysql_init_db.yaml
version: "2"
services:
mysql:
container_name: mysql_01
image: mysql:5.7 #拉取的镜像版本,也可替换成自己的镜像
#env_file:
#- ../env/mysql.env
environment:
MYSQL_ROOT_PASSWORD: "root123456" #数据库的密码,也就是root用户的密码#
# MYSQL_USER: 'test'
# MYSQL_PASS: 'test123456'
volumes: #里面的参数为映射本地和docker容器里面的文件夹和目录
- /data/mysql:/var/lib/mysql
- ./init:/docker-initdb.d/ #sql初始化目录
ports: #映射端口
- "3306:3306"
- sql脚本以及目录
- 创建初始化目录
-
mkdir -p init
-
- 创建初始化脚本
-
vi /init/db_demo_01.sql
-
- 脚本内容
-
create database db_demo_01 default charset 'utf8'; use db_demo_01; create table user ( id int auto_increment primary key, username varchar(64) unique not null, email varchar(120) unique not null ); insert into user values(1, "zs","zs@qq.com"); insert into user values(2, "ls","ls@qq.com");
- 创建初始化目录
- 启动mysql_init-db.yaml服务
-
docker-compose -f mysql_init_db.yaml up
-