はじめに
Dockerを使用すると、ユーザーは、ホストコンピューターから分離されたさまざまなアプリケーションを実行できます。実行するために、個別のオペレーティングシステムを用意する必要はありません。代わりに、仮想マシンのハイパーバイザーと同様の役割を持つコンテナー化エンジン(Dockerデーモン)を使用してDockerコンテナーをインストールおよび管理します。
Dockerの使用を開始すると、コンテナー間でデータを共有する方法を知る必要がある状況に直面します。
前提条件
- sudo権限を持つユーザー
- 端末/コマンドラインへのアクセス
- Dockerの安定リリース
ステップ1:データボリュームのあるコンテナを作成する
2つのコンテナ間で共有する方法を示すには、コンテナを作成する必要があります( Container1 ) データボリューム( datavolume1 ) 後で共有できます。
1.まず、2つのDockerコンテナ間で共有する独立したボリュームを作成します。
docker volume create --name DataVolume1
2.次に、Dockerコンテナーを作成し、 Container1という名前を付けます。 次のコマンドを実行して、データボリュームを接続します。
docker run -ti --name=Container1 -v DataVolume1:/datavolume1 ubuntu
2.次に、データボリュームにファイルを作成し、それにテキストを追加します。
echo "Share this file between containers" > /datavolume1/Example.txt
3.次のコマンドでコンテナを終了します: exit
ステップ2:新しいコンテナを作成してデータボリュームに追加する
次に、新しいコンテナを作成します( Container2 ) Container1とファイルを共有します 。
1. Container2を作成します Container1からボリュームをマウントします :
docker run -ti --name=Container2 --volumes-from Container1 ubuntu
2. Container2からテキストを追加します 両方のコンテナがDataVolume1に書き込めることを示すため :
echo "This will also appear in DataVolume1" >> /datavolume1/Example.txt
3. Container2を終了するには 次のコマンドを使用します: exit
ステップ3:Dockerコンテナ間でデータを共有できることを確認する
1. Container1を再起動します データボリュームの変更を確認するには:
docker restart Container1
2.両方のコンテナが同じデータボリュームに対して読み取りと書き込みを実行できること、および Container2に書き込んだテキストを確認します。 DataVolume1に表示されます :
cat /datavolume1/Example.txt
テキストがデータボリュームに正常に追加された場合、出力には次のように表示されます。
Share this file between containers
This will also appear in DataVolume1
3.終了するには、次のコマンドを使用してコンテナーを終了します: exit
オプション:読み取り専用ボリュームを作成する
「読み取り専用」のDockerコンテナを作成すると、他のユーザーがデータに変更を加えることができなくなり、ファイルの表示のみが可能になります。
:ro
を追加します 共有する必要があるが変更しないコンテナ名に変更します。
次の例では、 Container2 Container1からのファイルを表示できるようになります ただし、編集することはできません。
docker run -ti --name=Container2 --volumes-from Container1:ro ubuntu
Container2かどうかを確認するには 読み取り専用の権限がある場合は、サンプルファイルを Container1から削除してみてください コマンドを実行する:
rm /datavolume1/Example.txt
出力には、読み取り専用ファイルが正常に作成されたことが示されます。その結果、他のコンテナはデータにアクセスして表示できますが、データに貢献したり変更したりすることはできません。