[英]docker share data between containers when one spins the other
我有一個容器,其中包含一個名為spinner的專用數據卷,它將數據寫入該卷。 狙擊手可以旋轉容器。
當snipper啟動一個容器並嘗試安裝與spinnee容器相同的數據卷時,該卷沒有文件。
這是一個例子來證明這一點
$ docker run --rm -it --name spinner -v data:/data -v /var/run/docker.sock:/var/run/docker.sock alpine /bin/sh
/ # apk update -qq && apk add docker -qq
/ # cat /data/foo
foo
/ # hostname
27a807a0bd01
/ # docker run --rm -it --name spinnee -v /data:/data alpine /bin/sh
/ # 759d96c4ba39
/ # ls -l /data
total 0
可以通過使用相同的數據量來繞過這個問題,這意味着Spinner可以通過指定相同的數據量來旋轉Spinnee 。 如
/ # docker run --rm -it --name spinnee -v data:/data alpine /bin/sh
/ # hostname
38dec687817c
/ # cat /data/foo
foo
另一種繞過它的方法是使用外部卷並對其進行管理。 正確
問題是, spinner旋轉容器通過利用 docker-compose 並且還使用 docker-compose 進行跨度,因此每個容器都將有一個帶有自動生成名稱的數據卷。
我怎樣才能讓沒有概念的微調器在容器內運行,在它自己和它旋轉的容器(即spinee )之間提供透明的體積共享?
您可以嘗試使用--volumes-from 。 它不能滿足您的所有要求( spinner
仍然需要知道在容器內運行),但至少您不需要按名稱指定卷。
$ docker run --rm -it --name spinner -v data:/data -v /var/run/docker.sock:/var/run/docker.sock alpine /bin/sh
/ # apk update -qq && apk add docker-cli -qq
/ # echo "It works!" >> /data/test.txt
/ # docker run --rm --name spinnee --volumes-from "$(hostname)" alpine /bin/sh -c "cat /data/test.txt"
It works!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.