このガイドでは、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はランダムな名前を生成します。-
-p
MySQLコンテナポート3306
をバインドします ホストマシンの同じポートに接続します。127.0.0.1
に接続できるようになります ポート3306
MySQLクライアントを使用する(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マニュアルを確認してください。
ご不明な点やご提案がございましたら、お気軽にお問い合わせください。喜んでフォローアップさせていただきます。