Docker: ボリューム

Dockerボリュームでコンテナデータを永続化する方法

Stackheroドキュメントへようこそ

Stackheroは、迅速かつ信頼性の高いコンテナデプロイメントのために設計された、すぐに使えるDockerクラウドCaaS(Containers as a Service)プラットフォームを提供しています。

  • docker-compose up ひとつで本番環境にデプロイできます。追加設定は不要で、コンテナをそのまま起動するだけです。
  • 独自のドメイン名を選択でき、自動的にHTTPSでセキュア化されます(例:https://api.your-company.comhttps://www.your-company.comhttps://backoffice.your-company.com など)。
  • プライベートかつ専用インフラ上で、高いパフォーマンスと堅牢なセキュリティを実現します。
  • ワンクリックでアップデートを適用でき、シンプルかつ手間のかからないメンテナンスが可能です。

約5分でコンテナを本番環境で稼働させることができます。Stackheroがインフラ、アップデート、セキュリティを管理するため、アプリケーション開発に集中できます。Docker CaaSクラウドホスティングの詳細もご覧ください。

設計上、Dockerコンテナは一時的です。つまり、コンテナ内に直接保存されたデータは、コンテナが削除されたり別のインスタンスに置き換えられたりすると失われます。データの永続性を確保するためには、Dockerボリュームが推奨される方法です。

Stackheroでバインドマウントを使用しないでください。 データ損失を防ぐために常にDockerボリュームを選択してください。

バインドマウントは、StackheroホストVMのディレクトリをコンテナにリンクすることを含みます。しかし、バインドマウントに依存すると、Stackhero for Dockerインスタンスを更新する際に、この方法で保存されたすべてのデータが失われます。

バインドマウントは通常、docker runコマンドで-v /myDirectory:/mntのような構文で指定されます(先頭の/に注意)。Docker Composeファイルでは、volumes: /myDirectory:/mntとして表示されます。これらの設定を禁止しないとデータを失います。

代わりに、Dockerによって管理され、絶対パスを参照しないDockerボリュームを使用してください。

要約すると:

誤ったアプローチ:

docker run -it -v /myDirectory:/mnt alpine

正しいアプローチ:

docker volume create myVolume
docker run -it -v myVolume:/mnt alpine

Docker Composeファイルを使用する場合:

誤った設定:

services:
  myService:
    image: alpine
    volumes:
      - /myDirectory:/mnt

正しい設定:

services:
  myService:
    image: alpine
    volumes:
      - myVolume:/mnt

volumes:
  myVolume:
    name: myVolume

Dockerボリュームを管理するためのクイックリファレンスです:

  • myVolumeという名前の新しいボリュームを作成するには、次を実行します:

    docker volume create myVolume
    
  • 既存のすべてのボリュームを一覧表示するには:

    docker volume ls
    
  • myVolumeという特定のボリュームを削除するには:

    docker volume rm myVolume
    

    注意:ボリュームを削除すると、その中に保存されているすべてのデータが永久に削除され、後で回復する方法はありません。