今回はDockerHubを利用したコンテナもしくはコンテナイメージの操作についてです。
- ■DockerHub上から利用したいコンテナイメージを探す
- ■DockerHub上で見つけたMySQLコンテナイメージをpull
- ■pullしたMySQLコンテナイメージを起動
- ■runしたMySQLコンテナイメージの状態確認
- ■runしたMySQLコンテナイメージへの接続(コンテナへのログイン)
- ■runしたMySQLコンテナにローカルPCから接続
- ■runしたMySQLコンテナの停止および削除
■DockerHub上から利用したいコンテナイメージを探す
まずは、コンテナイメージを探します。
ここでは、MySQLのコンテナイメージを探してみたいと思います。
1.トップ画面の「Explore」をクリックします。
2.検索窓に「mysql」と入力しEnterキーを押します。
3.Filters欄から「Official Images」をクリックします。
4.表示された「mysql」をクリックします。
5.画面右側に表示されているdockerコマンドをコピーします。
※docker pull mysql の部分をコピーします。
■DockerHub上で見つけたMySQLコンテナイメージをpull
1.以下コマンドを実行します。
docker pull mysql
2.プロンプトが戻ってきて、最終行に「docker.io/library/mysql:latest」と表示されていることを確認します。
3.前の手順でpullしたコンテナイメージを確認します。
docker images
■pullしたMySQLコンテナイメージを起動
1.以下コマンドを実行します。
docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=P@ssw0rd -d mysql:latest
--name コンテナ名・・・ 任意に付けるコンテナ名
-e 環境変数・・・ 変数の設定。ここではMYSQL_ROOT_PASSWORDというmysqlユーザとしてrootのパスワードの設定を行っています
-d・・・ バックグラウンドでmysqlコンテナを起動
mysql:latest ・・・ docker imagesコマンドで確認したTAG列の内容を指定します。
※コマンド実行後文字の羅列が表示されますが、これは「コンテナID」というものです。
■runしたMySQLコンテナイメージの状態確認
1.以下コマンドを実行します。
docker ps -a
docker runコマンド実行後に出力されたコンテナIDの一部が「CONTAINER ID」に表示されます。
実行結果の右側部分が切れてしまっていますが、続きは以下の画像です。
「NAMES」欄に設定したmysql1が表示されています。
※後ほど、NAMES列の値(ここでは、mysql1)を利用します。
■runしたMySQLコンテナイメージへの接続(コンテナへのログイン)
ここでは、バックグラウンドで起動したMySQLへの接続(コンテナへのログイン)を行い、
簡単なSQLコマンドを実行してみようと思います。
1.以下コマンドを実行します。
docker exec -it mysql1 bash
接続がうまくいくと、上記の通りrootのプロンプトが表示されます。
docker execコマンドにより、指定したコンテナに対してコマンドを実行することができます。
そのため、bashを末尾につけることで、「MySQLコンテナのbashコマンドを実行する」という意味になります。
-itは現時点ではbashコマンドを実行するためのおまじない程度の理解で大丈夫です。
2.環境変数の情報を確認するため、以下コマンドを実行します。
env
MYSQL_VERSIONやdocker runコマンドで設定したMYSQL_ROOT_PASSWORD等の情報を確認できます。
3.mysqlにログインするため、以下コマンドを実行します。
mysql -u root -p
※上記実行後、「Enter password:」が表示されたりmysqlのrootユーザのパスワードを入力します。
4.簡単なSQLコマンドを実行します。
show databases
MySQL内のデータベース一覧を確認することができました。
5.MySQLデータベースから抜けるため、以下コマンドを実行します。
quit
MySQLデータベースから抜けることができました。
続いてMySQLコンテナからも抜けてみます(ログアウトしてみます)
6.「Ctrl」を押したまま、「P」⇒「Q」の順で押します。
※操作的には「Ctrl+P」⇒「Ctrl+Q」って感じです。
※成功すると、「read escape sequence」と表示され、通常のWindowsのプロンプトに戻ります。
■runしたMySQLコンテナにローカルPCから接続
ここでは、バックグラウンドで起動したMySQLへローカルPCから接続を行い、
簡単なSQLコマンドを実行してみようと思います。
※今までは直接MySQLにログインしていましたので、ローカルPCからネットワーク接続を行ってみたいと思います。
ローカルPCからはMySQL Workbenchを利用しMySQLコンテナに接続することにします。
また、ローカルPCからの接続時にポートフォワードを利用し、
ポート3300で接続した際に3306へポートフォワードされる設定でMySQLコンテナを起動させます。
1.以下コマンドを実行します。
docker run --name mysql1 -p 3300:3306 -e MYSQL_ROOT_PASSWORD=P@ssw0rd -d mysql:latest
2.念のため、docker ps コマンドで起動状態を確認します。
尚、PORTS列をみると、「0.0.0.0:3300 -> 3306/tcp」と表示されており、
127.0.0.1:3300で接続すると3306に転送されるようになっております。
3.MySQL Workbenchにて接続情報を登録します。
4.「Test Connection」をクリックし、以下画面が出力されることを確認します。
5.簡単なSQLコマンドを実行します。
問題なく、データベース情報が表示されました。
■runしたMySQLコンテナの停止および削除
ここでは、起動中のMySQLを停止し、その後に削除したいと思います。
1.現在の起動状態を確認するため、以下コマンドを実行します。
docker ps -a
2.停止するため、以下コマンドを実行します。
docker stop mysql1
docker ps -a
3.停止したMySQLを削除するため、以下コマンドを実行します。
docker rm mysql1
docker ps -a
※docker rm コマンドにより、docker ps -a からも表示されなくなることが確認できました。
以上です。