制作docker镜像常见的有两种方式:
- 使用Dockerfile生成。
- 在已有的镜像基础上,生成容器,在容器里部署应用后,用部署好的容器生成新的镜像。
采用第二种方式
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才能被成功启动。