1. ホーム
  2. docker

[解決済み] Dockerで既存の名前付きボリュームにデータを追加する正しい方法は何ですか?

2022-09-18 03:39:59

質問

Dockerを旧来の方法で、ボリュームコンテナを使っていました。

docker run -d --name jenkins-data jenkins:tag echo "data-only container for Jenkins"

しかし、今は名前付きボリュームを作成する新しい方法に変更しました。

 docker volume create --name my-jenkins-volume 

この新しいボリュームを新しいJenkinsコンテナにバインドしました。 残っているのはフォルダだけで、その中に /var/jenkins_home を持つフォルダです。(これは docker cp ) さて、私はそのフォルダの内容で新しい名前のボリュームを満たしたいのです。

そのフォルダの内容を /var/lib/jenkins/volume/my-jenkins-volume/_data ?

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

あなたは ができます。 に直接データをコピーすることは確かに可能です。 /var/lib/docker/volumes/my-jenkins-volume/_data にコピーすることができますが、これを行うことによって、あなたは

  • docker ホストへの物理的なアクセスに依存する。 この手法は、リモートの docker api とやり取りする場合には機能しません。

  • ボリューム実装の特定の側面に依存していると、将来的に変更される可能性があり、それに依存しているすべてのプロセスを壊してしまう可能性があります。

コマンドラインクライアントを介して、docker api を使用して達成できることに依存する方が良いと思います。 最も簡単な解決策は、ヘルパーコンテナのようなものを使用することでしょう。

docker run -v my-jenkins-volume:/data --name helper busybox true
docker cp . helper:/data
docker rm helper