Docker を使用した MySQL のデプロイの詳細説明 (データ永続化)

Docker を使用した MySQL のデプロイの詳細説明 (データ永続化)

この記事では、Docker を使用して MySQL をデプロイし、データを保持する方法について簡単に説明します。tutum-docker-mysql プロジェクトを使用して MySQL サーバーを構築し、Dockerfile を書き直す時間を節約します。

まず、tutum-docker-mysql を実行します。

docker run -d -p 3306:3306 --name mysql tutum/mysql

tutum/mysqlイメージがローカルにない場合は、Dockerはまずそのイメージをダウンロードします。このステップには時間がかかる場合があります。実行が完了したら、次のようになっていることを確認します。

tutum-docker-mysql はアクセスするためのランダムなパスワードを自動的に作成します。これはログを通じて確認できます。

ログ内のパスワードを使用してmysqlにログインします

mysql -uadmin -pi6k5USp9Km9G -h127.0.0.1

理論的には、この時点で MySQL に正常にログインしています。データベースとテーブルを作成して終了できます。ただし、コンテナを停止して再起動すると、データは失われます。実際にデータを保存するにはどうすればよいでしょうか?

解決策は、ローカル ファイルをコンテナーにマウントすることです (データベース ファイルを保存するために、ホストからコンテナーにローカル フォルダーをマウントします)。

まず、前のコンテナを停止します

docker 停止 mysql

ローカルのマウント可能なパスを指定して、tutum-docker-mysql を再起動します。コンテナ内の /var/lib/mysql ディレクトリにマウントされる /home/walter/softwares/tutum-docker-mysql/data を指定します (-v ボリュームをバインドマウント)。このようにして、ホストのディレクトリにデータを永続化できます。

sudo docker run -d -p 3306:3306 -v /home/walter/softwares/tutum-docker-mysql/data:/var/lib/mysql -e MYSQL_PASS="mypass" tutum/mysql

上記で起動したときに、パスワードを mypass として指定して作成しました。次に、MySQL にログインしてデータを作成し、保存されるかどうかを確認してみましょう。

シェル>mysql -uadmin -pmypass -h127.0.0.1
mysql>データベーステストを作成します。

mysqlを終了し、コンテナを再起動します。実行した操作は保持されます。mysqlを起動するたびに、次のコマンドを使用できます。

docker run -d -p 127.0.0.1:3306:3306 -v /home/walter/softwares/tutum-docker-mysql/data:/var/lib/mysql tutum/mysql

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerはデータの永続性を実現するためにMySQLをマウントします

<<:  Nodejs がイントラネット侵入サービスを実装

>>:  Windows 10 での MySQL 8.0.12 解凍バージョンのインストール グラフィック チュートリアル

推薦する

Linux には make コマンドがありません (make: *** ターゲットが指定されておらず、makefile または make コマンドのインストール方法が見つかりません)

知らせ! ! !この状況は、実際には仮想マシンのインストール中に回避できます。次回仮想マシンをテスト...

WindowsシステムでPhPStudy MySQLの起動に失敗する問題を解決する

エラーを報告するApache\Nginx サービスは正常に起動しましたが、MySQL は起動に失敗し...

vue-nuxt ログイン認証の実装

目次導入リンク始めるコードを読み進めてくださいプロキシ設定傍受を要求する異なるプレフィックスを持つイ...

MySQL でよく使用されるデータベースとテーブル シャーディング ソリューションの概要

目次1. データベースのボトルネック2. サブライブラリとサブテーブル2. 横長テーブル3. 垂直サ...

MySQL で distinct メソッドを使用する詳細な例

明確な意味: distinctive は、一意のレコードの数を照会するために使用されます。つまり、d...

HTML ベースタグ target=_parent の使用の紹介

<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトのタ...

Faint: 「Web2.0 を使用して標準に準拠したページを作成する」

今日、ある人がウェブサイト開発プロジェクトについて話をしてくれました。具体的な要件について話すと、「...

Docker で複数の MySQL コンテナを作成して実行する方法の例

1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...

Vueは視覚的なドラッグページエディタを実装します

目次ドラッグアンドドロップの実装ドラッグイベントドラッグして開始リリースゾーンでの移動境界処理、角度...

Vue の this.$store.state.xx.xx に関する簡単な説明

目次これを Vue.$store.state.xx.xxストアからデータを取得する私のプロジェクトフ...

MySQL の sql_mode モード例の詳細な説明

この記事では、MySQL の sql_mode モードについて例を挙げて説明します。ご参考までに、詳...

CSS3 @mediaの基本的な使い方のまとめ

//文法: @media mediatype and | not | only (メディア機能) ...

Mysql マスタースレーブ同期構成の実践の詳細な説明

1. はじめに以前、「MySQL マスター スレーブ同期の原理」という記事を書きました。この記事を読...

MySQLカバーインデックスの詳しい説明

コンセプトインデックスにクエリ要件を満たすすべてのデータが含まれている場合、それはカバーリング イン...

HTML テーブルタグについての簡単な説明

主にその構造といくつかの重要な特性について説明します。少しずつ改善しながら紹介していきます。 1) ...