docker持久化mysql时遇到的坑

制作docker镜像常见的有两种方式:

  1. 使用Dockerfile生成。
  2. 在已有的镜像基础上,生成容器,在容器里部署应用后,用部署好的容器生成新的镜像。

采用第二种方式
1、使用一个纯净centos7镜像,创建一个容器

docker run -d --name my_mysql REPOSITORY:TAG

2、进入该容器

docker exec -it my_mysql /bin/bash

3、离线安装mysql软件,将mysql的安装包传入容器,并安装

docker cp mysql-5.6.20.tar.gz my_mysql:/data

4、设置mysql配置,配置mysql数据存储的目录为/data/mysql,并启动

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql --user=root
#启动
/usr/local/mysql/bin/mysqld_safe --user=root &
#该密码
mysql -h127.0.0.1 -uroot mysql -e "update user set Password=password('root');flush privileges;"

5、验证可以正常启动mysql后,安全关闭mysql

/usr/local/mysql/bin/mysqladmin -uroot -proot shutdown -S /tmp/mysql.sock

6、使用这个安装了mysql的容器建立镜像

docker commit my_mysql my_mysql_store:v1

目前已拥有了一个安装了mysql的docker镜像
1、开始持久化,使用这个镜像创建容器

docker run -d --name mysql_store -v /data/mysql_store:/data/mysql my_mysql_store:v1

2、启动mysql,但失败
3、使用这个镜像创建容器建立非持久化容器

docker run -d --name mysql_store my_mysql_store:v1

4、启动mysql,启动成功

坑:如果打算持久化mysql,在从纯净centos7镜像中启动容器时,就需要使用持久化参数 -v 创建容器,在这样的容器上安装mysql后,生成的镜像,再次持久化成新的容器时,mysql才能被成功启动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值