1

これまでのところ、VOLUME は

  • 永続化されるデータ コンテナ内のディレクトリを指定します
  • ホスト コンテナにリンクする場所を指定します

私が理解できていないのは、VOLUME /path/to/appまたはさらに悪いことを使用する Dockerfile が非常に多く見られる理由VOLUME /var/lib/mysqlです。このボリュームを持つコンテナーを作成し、--volumes-from永続化のためにそのコンテナーにリンクするために使用することをお勧めします。しかし、実際にそのデータを使用しているコンテナー内でその仕様を作成するのはなぜでしょうか。それはどのように役立ちますか?私が見る限り、 VOLUME /var/dataただ言っているのと何ら変わりはありませんRUN mkdir /var/data。ボリュームがデータ コンテナー内にない場合、ホストと共有されている場合、または他のコンテナーによって使用されている場合、ボリュームはどのように役立ちますか?

4

1 に答える 1

1

Docker イメージと Docker コンテナーには、遅い階層化されたファイル システムがあります。ディレクトリをデータ ボリュームとして定義することにより、docker にこれらのディレクトリを低速の階層化ファイル システムの外に出すように指示します。これは、次のような複数の結果として発生します。

  • 高速ファイルシステム
  • 複数のコンテナ間でボリュームを共有する機能
  • 永続性 (そのボリュームを使用するコンテナーが少なくとも 1 つ存在する限り)

これが、ボリュームが商品であるだけでなく、良好な I/O パフォーマンスが期待されるディレクトリに必要な理由です。


私が見る限り、VOLUME /var/data は単に RUN mkdir /var/data と言っているのと何ら変わりはありません。

違いは、ボリュームの場合、ディレクトリ/var/dataが別の (より高速な) ファイル システム上のマウント ポイントになることです。コンテナーでコマンドを/var/data実行することにより、単なる別のディレクトリではないことを確認できます。mount

$ docker run --rm -v /var/data busybox mount
rootfs on / type rootfs (rw)
none on / type aufs (rw,relatime,si=6c354c296f850c3c)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
/dev/mapper/vg0-root on /etc/resolv.conf type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/vg0-root on /etc/hostname type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/vg0-root on /etc/hosts type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/vg0-root on /var/data type ext4 (rw,relatime,errors=remount-ro,data=ordered)
proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/sysrq-trigger type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/irq type proc (ro,nosuid,nodev,noexec,relatime)
proc on /proc/bus type proc (ro,nosuid,nodev,noexec,relatime)
tmpfs on /proc/kcore type tmpfs (rw,nosuid,mode=755)

/aufs階層化された(そして遅い)ファイルシステム上にあります

/var/dataext4 (および高速) ファイル システム上にある

于 2014-10-24T21:57:07.433 に答える