マウントについて(volume)Dockerで「ボリュームマウント」を使う前回に引き続き、Dockerにおける「マウント」についてです。今回は「ボリュームマウント」を確認していきます。ボリュームマウントはDockerが管理している領域上のデータをコンテナへマウントする機能です。複数のコンテナでボリュームの共有を行うことができ、バインドマウントよりもバックアップやマイグレーションが行いやすい、という利点があります。ボリューム作成とコンテナへのマウントそれでは実際に手順を確認してみます。1.まず、状態をわかりやすくするために起動中のコンテナがあるか確認しましょう。-a起動中のコンテナがあるなら、一度全て停止&削除しておきます。以下の様に1ライナーで「全てのコンテナを一括停止&削除」する方法があります。-q」で全コンテナのIDを取得します。(-fオプションで稼働中のコンテナも強制削除できます)2.次に、Docker上に存在しているボリュームを確認してみます。ls何も作成されていない状態だと思いますが、もしあれば削除しておきます。[ボリューム名]※こちらもコンテナの削除と同様、一括削除することができます。-q」で全ボリュームの名前を全て取得します。3.ここから、実際にボリュームを作成していきます。「vol_test」というボリューム名にしました。ls」コマンドで確認します。inspect」コマンドです。}]"Mountpoint"が指しているパスが、ボリュームの実体があるホスト上の場所です。「/var/lib/docker/volumes/[ボリューム名]/_data」となります。4.いよいよ、ボリュームマウントを指定してのコンテナ起動を行ってみます。httpd-d、-pオプションは今までと同じですが、今回は「--name」を指定しておきます。「--rm」オプションはコンテナ停止時に削除する、という指定です。type=bind」でしたが、今回は「type=volume」です。「src」には作成したボリューム名を、「dst」にはマウントするコンテナ側のパスを記述します。コンテナが起動したら、inspectコマンドでコンテナの詳細情報を確認してみます。[コンテナID]途中に、以下の記述が発見できるはずです。]次にコンテナの内部で以下のコマンドを実行し、index.htmlファイルを編集してみます。volume!</h1></body></html>Webブラウザでページを確認すると、編集内容で更新されているはずです。一度コンテナを削除⇒再度マウント指定してコンテナの起動を行ってみます。httpdコンテナ起動後にWebブラウザでページを確認すると、先ほどの編集内容が残っていることが確認できます。今まではコンテナを破棄するとコンテナ内部のリソースも破棄されていましたが、マウントによりボリューム領域上に編集内容を残しておくことができました。Dockerfileからのボリュームマウント続いて、Dockerfile上でボリュームマウントを指定する方法を見ていきます。新規にDockerfileを作成します。「Dockerfile_httpd_volume」という名前にしました。Dockerfile_httpd_volume内容はこのようにします。「RUN」の記述箇所で編集済みindex.htmlを用意し、「VOLUME」の記述箇所でマウントの記述も追加します。80ファイルを保存し、イメージをビルドします。httpd_volume:latest成功したら、ビルドしたイメージを起動します。※この時他のコンテナが「httpd_vol」ボリュームにマウント起動している場合、エラーになります。先にコンテナを停止してマウントを解除しておきます。httpd_volumeWebブラウザでページを確認すると、Dockerfileで編集した内容になっています。コンテナ内の記述でボリュームが上書きされています。今回はDockerのボリュームマウントの確認とDockerfileへの記述方法でした。次回は「ボリュームコンテナ」と、ボリュームのバックアップ・リストアについて確認していきます。Corp.先頭へ戻る。