目录准备
目录结构:
─/home/mysql ├── conf.d └── my.cnf ├── data ├── start.sh
my.cnf:mysql配置文件
[client] default-character-set=utf8 [mysqld] character-set-server=utf8 performance_schema = OFF [mysql] no-auto-rehash default-character-set=utf8
start.sh:创建容器的脚本
#!/bin/bash echo "create a mysql container.." docker run -d --name mysql -v $(pwd)/conf.d:/etc/mysql/conf.d -v $(pwd)/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="123456" -e MYSQL_DATABASE="test_bd" -p 3307:3306 mysql:5.7.19 --character-set-server=utf8 --collation-server=utf8_general_ci
简单说明:docker run 为运行容器的命令,若本地仓库不存在mysql:5.7.19的镜像则自动从DockerHub pull下来。
参数:
-d:后台运行
-v, 挂载配置文件与数据卷
-e, 指定mysql的root用户密码,并指定创建的数据库名,且设置为环境变量
-p, 映射容器端口给宿主机端口
快速开始
在mysql目录下给脚本添加可执行权限,并运行脚本:
chmod +x start.sh
./start.sh
查看运行的容器:
docker ps
现在看看mysql容器是否正确运行
docker exec -it mysql bash
首先docker run创建时,写入的环境变量MYSQL_DATABASE会由mysql镜像处理,创建database。
我们在容器中使用env查看环境变量时,docker run指定的两个环境变量也被写入。