サーチ…


データ専用コンテナ

データ専用コンテナは廃止され、アンチパターンと見なされています。

dockerのvolumeサブコマンドの前のyoreの時代、名前付きボリュームを作成する前に、Dockerはどのコンテナにも参照がなくなったときにボリュームを削除しました。 Dockerは名前付きボリュームを作成する機能を提供するだけでなく、さまざまなdocker volumeサブコマンドを使用してさらに多くのユーティリティを提供するため、データ専用コンテナは廃止されました。このため、データ専用コンテナはアンチパターンとみなされています。

ここ数年のウェブ上の多くのリソースには、「データ専用のコンテナ」と呼ばれるパターンがあります。これは単に周囲のデータボリュームへの参照を保持するためだけに存在するDockerコンテナです。

このコンテキストでは、「データボリューム」はホストからマウントされていないDockerボリュームです。明確にするために、 "データボリューム"は、 VOLUME Dockerfileディレクティブで作成されたVOLUME 、またはdocker docker runコマンドで-v /path/on/container形式でコマンドラインで-vスイッチを使用して作成されたボリュームです。したがって、 "データ専用コンテナ"は、データボリュームが添付されていることを目的とするコンテナです。これは、 --volumes-from docker runコマンドの--volumes-fromフラグによって使用されます。例えば:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

上記のコマンドが実行されると、「データ専用コンテナ」が作成されます。これは単にデータボリュームが添付された空のコンテナです。このボリュームを次のように別のコンテナで使用することは可能でした:

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

mysqlコンテナには、 mysql-dataも同じボリュームがありmysql-data

Dockerはvolumeサブコマンドと名前付きボリュームを提供するようになったため、このパターンは廃止され、推奨されていません。

volumeサブコマンドと名前付きボリュームを使用するには、「名前付きボリュームの作成」を参照してください。

データボリュームの作成

docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql

このコマンドは、 mysqlイメージから新しいコンテナを作成します。また、新しいデータボリュームを作成し、それを/var/lib/mysqlコンテナにマウントします。このボリュームは、その内部のすべてのデータがコンテナの存続期間を超えて持続するのを助けます。つまり、コンテナが削除されると、そのファイルシステムの変更も削除されます。データベースがコンテナにデータを格納していて、コンテナが削除された場合、そのデータもすべて削除されます。ボリュームは、そのコンテナが削除されたときを超えても特定の場所に保持されます。

--volumes-fromコマンドラインオプションを使用すると、複数のコンテナで同じボリュームを使用することができます。

docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql

mysql-2コンテナには、 mysql-1データボリュームが接続されており、 /var/lib/mysqlパスも使用されています。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow