1. 程式人生 > >docker持久化mysql時遇到的坑

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才能被成功啟動。