簡體   English   中英

當一個容器旋轉另一個時,docker 在容器之間共享數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM