状況
検証用の MySQL を起動する手順書に、次のコマンドが書かれている。
このコマンドの説明として正しいものは?
$ docker run -d --name db \ -e MYSQL_ROOT_PASSWORD=devpass \ -v dbdata:/var/lib/mysql \ mysql:8.4正答
- カレントに dbdata というディレクトリを作り、そこにデータを置く
- -e は、コンテナの終了時に環境変数をファイルへ書き出す指定である
- dbdata は名前付きボリュームで、コンテナを消してもデータは残る
- -d を付けたので、コンテナを止めると自動で削除される
解説
-v の左側が dbdata のような名前なら Docker が管理する名前付きボリューム、./data や /srv/data のようなパスならホストのディレクトリをそのまま見せるバインドマウントになる。名前付きボリュームはコンテナと独立しているので、docker rm で db を消しても dbdata のデータは残り、同じ -v を付けて起動し直せば続きから使える。カレントにディレクトリはできない(1 番目)。-e はコンテナに環境変数を渡す指定(2 番目)。-d はバックグラウンドで動かす指定で、止めたら削除するのは --rm(4 番目)。
参考: docs.docker.com
この問題を含む Docker のテストを制限時間つきで解く
Dockerクイズへ