MySQLデータを永続化するコンテナを作るMySQLデータを永続化する時の問題点
1. 公式MySQLイメージのカスタマイズ1.1 Dockerfileの作成FROM mysql:latest RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume RUN sed -i -e "s|/var/lib/mysql|/var/lib/mysql-no-volume|" /etc/mysql/my.cnf
1.2 Dockerfileのビルド$ docker build . -t my-mysql
2. カスタマイズしたコンテナの起動とテストデータをDBに保存2.1 コンテナの起動docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=root -it my-mysql 2.2 MySQLにDB作成、テストデータを保存docker exec test-mysql mysql -u root --password=root mysql -e "create database test_db" docker exec test-mysql mysql -u root --password=root test_db -e "create table t1 (id int); insert into t1 values (100)" 2.3 コンテナを再起動し、コンテナ内に保存されたデータの確認docker stop test-mysql docker start test-mysql docker exec -it test-mysql mysql -u root --password=root test_db -e "select * from t1" 3. カスタマイズしてデータ保存したコンテナからイメージを作成3.1 カスタマイズしてデータが保存されたコンテナからイメージを作成docker commit test-mysql my-mysql 3.2 作成したイメージをDockerHubにPUSHdocker login docker tag my-mysql [DOCKERHUB_USERNAME]/my-mysql docker push [DOCKERHUB_USERNAME]/my-mysql 3.3 確認のため、ローカルのコンテナ、イメージを削除docker rm -f test-mysql docker rmi my-mysql 3.4 DockerHubにPUSHしたイメージをPULLしてコンテナ起動docker run --name test-mysql -it [DOCKERHUB_USERNAME]/my-mysql 3.5 DockerHubからPULLしたイメージに保存されたデータがあることを確認docker exec -it test-mysql mysql -u root --password=root test_db -e "select * from t1" 参考https://stackoverflow.com/questions/30740828/commit-data-in-a-mysql-container |
|