バージョンを指定してイメージの取得
docker pull mysql:5.7.25
MySQLサーバーコンテナを起動し、DATABASEを作成したりする
hoge
というDBの作成inari111
というユーザーの作成- -eオプションは環境変数を設定
- -d detachといい、バックグラウンドでコンテナを起動
docker run --name {コンテナ名} -e MYSQL_DATABASE=hoge -e MYSQL_USER=inari111 -e MYSQL_PASSWORD=hogehoge -e MYSQL_ROOT_PASSWORD={rootユーザーパスワード} -d mysql
コンテナに接続
docker run --link {コンテナ名}:mysql -it --rm mysql bash
-i
: ホストの入力をコンテナの標準出力をつなげる
-t
: コンテナの標準出力とホストの出力をつなげる
(シェルのような)インタラクティブなプロセスでは、コンテナのプロセスに対して tty を割り当てるために、 -i -t を一緒に使う必要があります。 後の例で出てきますが -i -t は -it と書けます。
デフォルトではコンテナを終了しても、コンテナのファイルシステム(の内容)を保持し続けます。これにより、多くのデバッグをより簡単にします(最後の状態を確認できるため)。そして、全てのデータを維持し続けるのがデフォルトです。しかし、短い期間だけ フォアグラウンド で動かしたとしても、これらのコンテナのファイルシステムが溜まり続けます。そうではなく、 コンテナの終了時に、自動的にコンテナをクリーンアップし、ファイルシステムを削除する には --rm フラグを追加します。
コンテナ内でのコマンドの実行が終わったらコンテナを自動で削除するということ。
MySQLに接続
hostはenvコマンドを叩いて表示された MYSQL_PORT_3306_TCP_ADDR
を使う
mysql -u inari111 -p hogehoge -h {MYSQL_PORT_3306_TCP_ADDR}