Duplicityを使用して、ドッカーボリュームを別のドッカーボリュームの特定のディレクトリにバックアップする必要があります。したがって、バックアップを実行するコンテナで次のコマンドを実行する必要があります。
mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label
/target
そこで、上記のコマンドを実行し、バックアップするボリュームをバックアップを保存するボリュームにマップできるように、冗長性のあるドッカーイメージを作成しました/backup
。
だから私の質問は、$ backup-labelをコマンドに渡し、run
上記の二重性を実行する前に正しいディレクトリ構造が存在することを確認するエントリポイントをどのように生成しますか?
ティア、オレ
PSコンテナを次のように実行できる場合:
ole@MKI:~$ docker run --rm -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image
それはすべてです。しかし、明らかにdockerはボリューム内のサブディレクトリマッピングを許可しません。すると、次のメッセージが表示されます。
docker: Error response from daemon: create backup-volume/label-for-backup: "backup-volume/label-for-backup" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
答え1
良い解決策は、シェルスクリプトをCMD
またはとして使用することですENTRYPOINT
。
変数をスクリプトに渡すには、-eを使用して環境変数をスクリプトに渡しますdocker run -e backup-label=somelabel
。このオプションの利点は、パラメータを解釈することなく個々の領域を設定できることです。私はあなたもそれを研究することをお勧めします${variable:-}
通事論。
あなたの場合:docker run --rm -e backup-label=somelabel -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image
シェルスクリプト(実行可能であることを確認):
#!/bin/sh
mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label
(これその他の回答あなたのユースケースにはよりエレガントなソリューションになることができます。しかし、この質問は少し異なり、答えも同じです。参考までに。また、あなたの要件はより複雑になるはずです...)