はじめに
MySQL は、よく知られているオープンソースのリレーショナルデータベース管理システムであり、最も人気のあるWebサーバーソリューションの1つです。意味のある方法でデータを保存および構造化し、簡単にアクセスできるようにします。
Docker は、CI/CD開発をサポートするPlatform-as-a-Service製品のセットです。これにより、ユーザーはコンテナーと呼ばれる仮想環境内でアプリケーションを開発およびデプロイできます。 Dockerは、単一のイメージを使用して、すべてのライブラリと依存関係を備えたアプリケーションを起動できます。
このチュートリアルでは、MySQL Dockerコンテナをデプロイし、コンテナ化されたデータベースの操作を開始する方法を学びます。
前提条件
- コマンドライン/ターミナルウィンドウへのアクセス
- sudoのユーザーアカウント 特権またはルートへのアクセス アカウント
- 既存のDockerインストール
MySQLDockerコンテナの実行
あまり多くのリソースを使用せずにデータベースを迅速にセットアップする必要がある場合は、コンテナーにMySQLをデプロイする は高速で効率的なソリューションです。これは、中小規模のアプリケーションにのみ適しています。エンタープライズレベルのアプリケーションは、MySQLDockerコンテナを検出しませんでした 彼らの仕事量には十分です。
Dockerソフトウェアを使用してデータベースをセットアップすることは、小規模なアプリでますます一般的になっています。データベースホスティング用に別のサーバーを用意する代わりに、MySQLデータベースコンテナをデプロイできます。
コンピューター上で複数のコンテナーを実行できます。コンテナーは、デプロイされたアプリケーションまたはソフトウェアを単一のユニットにパッケージ化しながら、ホストの同じカーネルとライブラリを共有します。これにより、データベースは非常に軽量で高速に起動できます。
MySQLDockerコンテナのインストール
Dockerでデータベースをセットアップすることは、MySQLイメージに基づいてコンテナーを構築することです。以下に概説する手順に従って、MySQLコンテナを起動して実行します。
ステップ1:MySQLDockerイメージをプルする
1.MySQL用の適切なDockerイメージをプルすることから始めます。次のコマンドに示すように、特定のバージョンをダウンロードするか、最新のリリースを選択できます。
sudo docker pull mysql/mysql-server:latest
MySQLの特定のバージョンが必要な場合は、latest
を置き換えます バージョン番号付き。
2.ダウンロードしたDockerイメージを一覧表示して、イメージがローカルに保存されていることを確認します。
sudo docker images
出力にはmysql/mysql-server
が含まれている必要があります リストされた画像の中で。
ステップ2:MySQLコンテナをデプロイする
1.イメージを取得したら、次のコマンドを使用して新しいMySQLコンテナのデプロイに進みます。
sudo docker run --name=[container_name] -d [image_tag_name]
-
[container_name]
を置き換えます お好みの名前で。名前を指定しない場合、Dockerはランダムな名前を生成します。 -
-d
オプションは、コンテナをバックグラウンドでサービスとして実行するようにDockerに指示します。 -
[image_tag_name]
を置き換えます 手順1でダウンロードした画像の名前を使用します。
この例では、 mysql_docker
という名前のコンテナーを作成します。 latest
を使用 バージョンタグ:
sudo docker run --name=[container_name] -d mysql/mysql-server:latest
2.次に、MySQLコンテナが実行されているかどうかを確認します。
docker ps
新しく作成されたコンテナが出力に表示されます。これにはコンテナの詳細が含まれ、1つはこの仮想環境のステータスです。ステータスがhealth: starting
から変更されます healthy
へ 、セットアップが完了したら。
ステップ3:MySQLDockerコンテナに接続する
1. MySQLサーバーコンテナをホストに接続する前に、MySQLクライアントパッケージがインストールされていることを確認する必要があります。
apt-get install mysql-client
2.次に、MySQLコンテナのログファイルを開いて、生成されたrootパスワードを見つけます。
sudo docker logs [container_name]
mysql_docker
の場合 コンテナ、実行します:
sudo docker logs mysql_docker
3.出力をスクロールして、 [Entrypoint] GENERATED ROOT PASSWORD
という行を見つけます。 :、パスワードをコピーしてメモ帳またはテキストエディタに貼り付け、後で使用できるようにします。
4.次に、次のように入力して、MySQLコンテナのbashシェルに移動します。
sudo docker exec -it [container_name] bash
例として作成されたコンテナに対して、次を実行します:
sudo docker -it mysql_docker bash
3.プロンプトが表示されたら、ログファイルからコピーしたルートパスワードを入力します。これで、MySQLクライアントがサーバーに接続されました。
4.最後に、サーバーのルートパスワードを変更して、情報を保護します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[newpassword]';
[newpassword]
を置き換えます 選択した強力なパスワードを使用します。
MySQLコンテナの構成
MySQLコンテナをインストールすると、その構成オプションが /etc/mysql/my.cnf=
にあります。 ディレクトリ。
構成を変更する必要がある場合は、ホストマシンに代替の構成ファイルを作成し、コンテナー内にマウントします。
1.まず、ホストマシンに新しいディレクトリを作成します。
sudo mkdir -p /root/docker/[container_name]/conf.d
2.そのディレクトリ内にカスタムMySQL構成ファイルを作成します:
sudo nano /root/docker/[container_name]/conf.d/my-custom.cnf
3.ファイルに入ると、必要な構成で行を追加できます。
たとえば、接続の最大数を(デフォルトの151ではなく)250に増やしたい場合は、構成ファイルに次の行を追加します。
[mysqld]
max_connections=250
4.ファイルを保存して終了します。
5.変更を行うには、MySQLコンテナを削除して再実行する必要があります。 。今回、コンテナは、新しく作成されたファイルの構成設定とデフォルトの構成ファイルの組み合わせを使用します。
これを行うには、コンテナを実行し、次のコマンドを使用してボリュームパスをマップします。
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=[my_password]" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
mysql
6.コンテナがホストから構成をロードしたかどうかを確認するには、次のコマンドを実行します。
mysql -uroot -pmypassword -h127.0.0.1 -P6603 -e 'show global variables like "max_connections"';
接続の最大数が250
になっていることがわかります。 。
データストレージの管理
デフォルトでは、Dockerはデータを内部ボリュームに保存します。
ボリュームの場所を確認するには、次のコマンドを使用します。
sudo docker inspect [container_name]
/var/lib/mysql
が表示されます 内部ボリュームにマウントされています。
データディレクトリの場所を変更することもできます ホスト上に作成します。コンテナの外部にボリュームがあると、他のアプリケーションやツールが必要なときにボリュームにアクセスできるようになります。
1.まず、ホスト上で適切なボリュームを見つけて、その上にデータディレクトリを作成します。
sudo mkdir -p /storage/docker/mysql-data
2.ここで、以前に作成したディレクトリをマウントして、コンテナを再起動します。
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=my_password" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
--volume=/storage/docker/mysql-data:/var/lib/mysql \
mysql
コンテナを調べると、MySQLコンテナがそのデータをホストシステムに保存していることがわかります。コマンドを実行します:
sudo docker inspect [container_name]
MySQLコンテナの起動、停止、再起動
コンテナで実行されているプロセスが停止すると、コンテナは自動的に停止します。
MySQLコンテナを起動するには 実行:
sudo docker start [container_name]
MySQLコンテナを停止します 、次のコマンドを使用します:
sudo docker stop [container_name]
MySQLコンテナを再起動するには 実行:
sudo docker restart [container_name]
MySQLコンテナを削除
MySQLコンテナを削除する前に、必ず最初に停止してください。
次に、次のコマンドでDockerコンテナを削除します:
sudo docker rm [container_name]