概要
今回は、前回までに作成したAWSのEC2のt2.microのインスタンスで、MySQL8.0のDokcerコンテナを起動してみたいと思います。
公式だとコマンドがたくさん書いてありますが、自分の環境によって実行するコマンドが違うためわかりにくいと思いました。
なので、今回はAlmaLinux9.3上にあるMySQLのDokcerコンテナの場合、どのコマンドを使用すればいいかについてまとめたいと思います。
※ただし、EC2のt2.microで実行するとものすごく遅いので、もう少し上のスペックのEC2インスタンスを使った方がよいと思います。
MySQLのコンテナを立てる
MySQLの最新のDockerコンテナのイメージを、DockerのMySQLのページにあるように下記のコマンドを使って取得します。
docker pull mysql/mysql-server:latest
上記のコマンドを実行するとイメージの取得を行うことができます。sudoなしでDockerコマンドを実行できない方は、私の過去の記事を参照してください。
イメージ取得後は、公式のコマンドを参考に作成した下記のコマンドを実行し、バックグラウンドでMySQLのコンテナを起動します。
docker run --name=mysql --restart on-failure -d [DockerimageID]
上記のコマンドの[DockerimageID]は、下記のコマンドで出てきたIDを使います。
docker images
今回は、赤枠のIDを使用しました。
上記のコマンドを実行すると下図のようにコンテナが起動します。
これでMySQLのコンテナが起動しました。
MySQLの仕様で初期化が終了するとパスワードを表示されますが、バックグラウンドだとログが表示されないためパスワードが表示されません。
なので、MySQLにアクセスするためのパスワードを取得するために、MySQLのコンテナの起動が完了したら下記のコマンドを実行する必要があります。
docker logs mysql
下図の赤枠の横にパスワードが表示されます。
次の章では、実際にこのパスワードを使用して、MySQLのコンテナにアクセスしたいと思います。
MySQLコンテナの外からMySQLを操作する
下記のコマンドを使用してアクセスしてください。
docker exec -it mysql mysql -uroot -p
コマンド実行後パスワードが要求されるので、先ほど表示されたパスワードを入力します。
入力すると下図のように表示されるので、無事にMySQLのコンテナに入ることができました。
ただし、デフォルトだとMYSQL_ONETIME_PASSWORDというオプションがTrueになっているため、初回ログインのタイミングで、パスワードが期限切れとして設定されます。
なので、必ず下記のコマンドを使って任意のパスワードに変更する必要があります。
ただし、’password’の部分を任意の文字列に変更してください。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
上記を実行して問題ないと下記のように表示されます。
このパスワード変更にかかった時間が約4分なので、このままの設定だと検証用等に使うのも厳しいと思います。
まとめ
これで、DockerでMySQLを起動することができました。
ただ、MySQLのデフォルト設定だと、EC2のt2.micro上ではものすごく動作が遅かったです。
もっとスペックの高いマシンであれば動くと思うので、いつかリベンジしてみたいです。
コメント