1. ホーム
  2. docker

[解決済み] docker -vコマンドを理解する

2022-03-05 09:01:07

質問

私はちょうど このチュートリアル の使い方を理解するために、Youtubeにある -v コマンドを使用します。

なぜ著者は -v コマンドを使用することができます。彼は、このように、コマンドを使っています。

docker run -v /var/lib/mysql --name=my_datastore -d busybox echo "my datastore"

これで、上のコマンドはある程度理解できました。

  • --name=my_datastore は、コンテナに特定の名前を与えます。
  • -d busybox に基づいて、デタッチドモードでコンテナを開始します。 busybox の画像を表示します。

コマンド実行後、コンソールに以下のような行が表示されます。

my datastore 

さて、わからないのは以下の部分です。

-v /var/lib/mysql

なぜ -v コマンドを使用し、なぜパス /var/lib/mysql を指定しましたか?

上記の行がなぜ、どのような文脈で使われるのか、理解に苦しみます。どなたか説明してください。

どのように解決するのですか?

その -v (または --volume への引数は docker run は、コンテナ内に、他のコンテナ・ファイルシステムとは別のストレージ空間を作成するためのものである。 このコマンドには2つの形式がある。

のように1つの引数を与えた場合 -v /var/lib/mysql これはDockerからスペースを割り当てて、指定された場所にマウントします。これは主に、Dockerからストレージを割り当てる方法です。 明確 サービスコンテナから 例えば、新しいバージョンのデータベースアプリケーションを実行したい場合、既存の MySQL コンテナを破棄して、新しいコンテナを起動する必要があります。 このとき データ そのため、データベースコンテナからアクセス可能なボリュームに保存します。

2つの引数が与えられたとき ( host_path:container_path ) のように -v /data/mysql:/var/lib/mysql の場合、これはコンテナ内のホストに指定されたディレクトリを指定されたパスにマウントします (正確には、この方法はホスト ファイル コンテナ内では、たとえば -v /etc/localtime:/etc/localtime とすると /etc/localtime として利用することができます。 /etc/localtime コンテナ内)。 これは、コンテナに情報を送り込む方法と、コンテナがホストからファイルにアクセスできるようにする方法のどちらかを提供するものです。

コンテナが利用可能なボリュームを持っている場合、そのボリュームは -v コマンドライン引数か VOLUME ディレクティブを使用すると、これらのボリュームに別のコンテナからアクセスすることができます。 --volumes-from オプションで指定します。

docker run --volumes-from my_datastore ...

これにより、ソースコンテナで定義されたボリュームは、起動するコンテナで利用できるようになります。 --volumes-from .

これについては、より詳しく ドッカーボリューム のドキュメントを参照してください。