安装包和脚本及配置文件必须在统一目录下
vim mysql.sh
#!/bin/sh
echo '导入镜像。。。'
docker load < mysql-server_8.0.tar
if [ $? -eq 0 ]; then
echo "镜像导入成功!"
else
echo "镜像导入失败!"
fi
echo '导入镜像到容器。。。。。。'
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:8.0
#(如果以上命令不行 可换 docker run --name mysql -p 3306:3306 -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6)
#查看容器启动状态
if [ $? -eq 0 ]; then
echo "容器启动成功!"
else
echo "容器启动失败!"
fi
echo '启动成功后,进入容器内部拷贝配置文件,到宿主主机。。。。'
#mkdir -r /usr/local/mysql8.0.20
if [ ! -d "/usr/local/mysql8.0.20" ];then
mkdir -p /usr/local/mysql8.0.20
else
echo "文件夹已经存在"
fi
#docker cp mysql:/etc/mysql /usr/local/mysql8.0.20
if [ ! -f "/usr/local/mysql8.0.20" ];then
echo "文件已经存在"
else
docker cp mysql:/etc/mysql /usr/local/mysql8.0.20
fi
if [ ! -f "/usr/local/mysql8.0.20" ]; then
echo "配置拷贝成功!"
else
echo "配置拷贝失败!"
fi
#echo '先停止容器。。。'
docker stop mysql
if [ $? -eq 0 ]; then
echo "容器停止成功!"
else
echo "容器停止失败!"
fi
#echo '再删除容器。。。'
docker rm mysql
if [ $? -eq 0 ]; then
echo "容器删除成功!"
else
echo "容器删除失败!"
fi
#echo '导入配置文件。。。'
#cat mysql8.0.20.sh
echo '创建容器。。。'
sh mysql8.0.20.sh
if [ $? -eq 0 ]; then
echo "容器创建成功!"
else
echo "容器创建失败!"
fi
#echo ' 查看是否启动成功。。。'
docker ps -a
配置脚本
#!/bin/sh
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /usr/local/mysql8.0.20/mysql:/etc/mysql \
-v /usr/local/mysql8.0.20/mmysql8.0.20/logs:/logs \
-v /usr/local/mysql8.0.20/mmysql8.0.20/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:8.0
命令解释:路径可以自己改
-p 端口映射
--privileged=true 挂载文件权限设置
--restart unless-stopped 设置 开机后自动重启容器
-v /mnt/sda1/mysql8.0.20/mysql:/etc/mysql 挂载配置文件
-v /mnt/sda1/mysql8.0.20/logs:/logs \ 挂载日志
-v /mnt/sda1/mysql8.0.20/data:/var/lib/mysql \ 挂载数据文件 持久化到主机,
-v /etc/localtime:/etc/localtime 容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456 设置密码
-d mysql:8.0.20 后台启动,mysql
执行脚本
./mysql.sh
看运行结果
参考文档