背景と目的
dockerのボリューム周りを見るときに、 -v
や --volume
オプションが使用されていることがあるのですが、bindなのかvolumeなのか分かりづらいところがあります(個人的な感想)。
なので、これからは --mount
を使っていこう!というちょっとしたメッセージングです。
--mount
って?
--mount
は、key=value形式でvolumeの指定をするフラグです。使用例は、こんな感じ。詳細は、こちらにあります。
docker run --name ubuntu01 -d -it \
--mount type=volume,src=myvol,dst=/vol \
ubuntu /bin/bash
--mount
はもともと swarm service で利用可能なフラグでしたが、 Docker 17.06 からスタンドアロンのコンテナでも使えるようになりました。
New users should try --mount syntax which is simpler than --volume syntax.
また、公式では新規の人たちは --mount
を使ってくれよな!と言っていますし、わかりやすいので僕もこちらが好きです(最近知った...)。
-v
や --volume
を --mount
に置き換える
それでは、今まで使っていたオプションを --mount
に置き換えます。
ホストとコンテナ間でデータを同期させる
ホストとコンテナ間でデータを同期させたいときは、 --mount type=bind,src=<パス>,dst=<パス>
を設定しましょう。
早速置き換えてみます。
docker run --name ubuntu01 -d -it \
-v $(pwd)/mydir:/vol \
ubuntu /bin/bash
docker run --name ubuntu01 -d -it \
--mount type=bind,src=$(pwd)/mydir,dst=/vol \
ubuntu /bin/bash
コンテナにボリュームをマウントする
コンテナにボリュームをマウントしたいときは、 --mount type=volume,src=<ボリューム名>,dst=<パス>
を設定しましょう。
早速置き換えてみます。
docker run --name ubuntu01 -d -it \
-v myvol:/vol \
ubuntu /bin/bash
docker run --name ubuntu01 -d -it \
--mount type=volume,src=myvol,dst=/vol \
ubuntu /bin/bash
正直好みの部分もありますが、オプションの内容がわかりやすいのはいいことだと思うので、公式にしたがって設定してみるといいと思います。また、DockerのVolumeについて、公式ページで結構わかりやすく書いてあると思いますので、興味がある方は一読してみるとよいかもしれません。