このガイドでは、Dockerコンテナで実行される新しいMySQLサーバーをわずか数分でセットアップする方法を段階的に説明します。
Dockerの優れた点の1つは、Dockerをマシンに直接インストールせずに、すばやく使用してアプリケーションを試すことができることです。たとえば、Dockerを使用して、リモートサーバーとしてコンテナ内のデータベースを実行し、アプリケーションがデータベースとどのように相互作用するかをテストできます。
DockerコンテナでMySQLを実行することは、広く使用されているメカニズムです。 MySQLは、Dockerコンテナで使用される最も人気のあるデータベースの1つです。
MySQLをDockerコンテナとして作成するには、ホストマシンにDockerがインストールされている必要があります。インストールしていない場合は、UbuntuにDockerをインストールするためのステップバイステップガイドをご覧ください。
1。 MySQLDockerイメージをプルする
DockerでMySQLサーバーを作成してテストするために最初に行う必要があるのは、DockerHubからMySQLの公式イメージを取得することです。
次のコマンドに示すように、8.0、5.7、5.6などの特定のバージョンをダウンロードするか、最新のリリースを選択できます。
sudo docker pull mysql:latest
MySQLの特定のバージョンが必要な場合は、 latestを置き換えてください バージョン番号付き。
docker imagesを実行できます コマンドを使用して、DockerHubからプルしたDockerイメージのリストを表示します。
sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2fe463762680 13 hours ago 514MB ご覧のとおり、MySQLイメージはローカルにインストールされたDockerで利用できるようになりました。
2。 Dockerボリュームのセットアップ
ご存知のように、Dockerコンテナーは原則として一時的なものであり、コンテナーが削除されるとデータや構成が失われることが予想されます。
ただし、Dockerボリュームは、Dockerコンテナー内で作成されたデータを永続化するメカニズムを提供します。したがって、Dockerコンテナの永続データを保存するためのDockerの推奨メカニズムです。
MySQLはデータファイルを/var / lib / mysqlに保存します ディレクトリ。そのため、デプロイする前に、データベースを永続化するためにDockerボリュームを設定する必要があります。そうしないと、コンテナの再起動時にデータが失われます。
新しいボリュームを作成して、 mysql-dataという名前を付けましょう 。すべてのデータベース情報を保存するために使用されます。
sudo docker volume create mysql-data 以下のコマンドを発行することで、Dockerが認識しているすべてのボリュームを一覧表示できます。
sudo docker volume ls DRIVER VOLUME NAME
local mysql-data
ご覧のとおり、新しく作成された mysql-dataという名前のDockerボリューム ここにあり、データを提供する準備ができています。その後、新しく回転したMySQLコンテナにアタッチできます。
3。 MySQLDockerコンテナを実行する
マシンにMySQLDockerイメージがあり、データを永続化するボリュームができたので、コンテナーをデプロイできます。また、 MYSQL_ROOT_PASSWORD を使用して、MySQLrootユーザーのパスワードを設定する必要があります。 環境変数。
それでは、コンテナを実行してみましょう:
sudo docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password mysql それでおしまい。これにより、MySQLインスタンスの最新バージョンが起動します。これは、指定されたルートパスワードを使用してどこからでもリモートアクセスできます。
物事をより透明にするために、この構文を分解してみましょう。まず、そのコマンドの各パラメータの意味は次のとおりです。
-
-dこのコンテナはデタッチモードで実行されるため、バックグラウンドで実行されます。 -名前コード>mysql-serverという名前を割り当てます コンテナインスタンスに。これを指定しない場合、Dockerはランダムな名前を生成します。-
-pMySQLコンテナポート3306をバインドします ホストマシンの同じポートに接続します。127.0.0.1に接続できるようになります ポート3306MySQLクライアントを使用する(mysql)ホストで実行しています。 -
-vオプションは、コンテナボリューム内のそのデータフォルダをバインドします(/ var / lib / mysql)ローカルDockerボリューム(mysql-data)前の手順で作成しました。 -
-e環境変数を設定します。この場合、MySQLのルートパスワード。 -
mysqlは、コンテナの作成に使用する画像の名前です。
実行中のコンテナを一覧表示することで、コンテナが実行されているかどうかを確認できます。
sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fc229e3df77 mysql "docker-entrypoint.s…" 37 minutes ago Up 34 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-server 4。 MySQLコンテナへの接続
コンテナにアタッチしてmysqlを実行することで、インタラクティブなMySQLシェルを取得できます。 指図。これにより、使い慣れたすべてのコマンドとフラグを使用するための完全なMySQLコマンドラインインターフェイスが提供されます。
sudo docker exec -it mysql-server mysql -u root -p
mysqlを使用してMySQLDockerインスタンスに接続することもできます ホストにプリインストールされている場合はクライアント。
デフォルトでは、mysqlクライアントは、 localhost に接続するように指示すると、UNIXソケットを使用して接続しようとすることに注意してください。 。したがって、 127.0.0.1を使用してください localhostではありません 。
mysql -u root -h 127.0.0.1 -p もちろん、MySQLWorkbenchなどのGUIベースのクライアントを使用してデータベースに接続することもできます。たとえば、「ホスト名」のMySQL Workbenchで、Dockerコンテナを起動したマシンのIPアドレスを指定します。
もちろん、上記のホスト名の例では、127.0.0.1の代わりに、MySQLDockerコンテナが機能しているマシンのIPアドレスを使用できます。
このアドレスは、 ifconfigを実行することで見つけることができます 引数なしのコマンド。
マシンのIPアドレスを使用すると、MySQLサーバーにリモートでアクセスできます。
5。 MySQLコンテナを停止、開始、再起動します
このコマンドは一時的に停止します 実行中のMySQLコンテナ(後で再開/再開できます):
sudo docker stop mysql-server 開始 MySQLコンテナ、実行:
sudo docker start mysql-server 以下のコマンドは、再起動に使用されます 実行中のMySQLコンテナ:
sudo docker restart mysql-server 結論
ご覧のとおり、Docker内でMySQLを実行する方が、MySQLサーバーをローカルにインストールするよりもはるかに高速で簡単です。ただし、テスト以外の目的でDockerでMySQLを使用する場合は、さらに多くの考慮事項があります。
詳細については、Docker HubのMySQLページと、このテーマに関する公式のMySQLマニュアルを確認してください。
ご不明な点やご提案がございましたら、お気軽にお問い合わせください。喜んでフォローアップさせていただきます。