LoginSignup
66
49

More than 5 years have passed since last update.

Dockerの -v や --volume オプションはわかりづらいから、 --mount を使おう

Last updated at Posted at 2018-11-18

背景と目的

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=<パス> を設定しましょう。

早速置き換えてみます。

-v
docker run --name ubuntu01 -d -it \
-v $(pwd)/mydir:/vol \
ubuntu /bin/bash
--mount
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について、公式ページで結構わかりやすく書いてあると思いますので、興味がある方は一読してみるとよいかもしれません。

参考

66
49
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
49