簡體   English   中英

在容器之間共享Docker容器存儲量

[英]Share Docker container storage volume between containers

作為練習,我嘗試設置三個Docker容器。

  • container1 (作為純存儲量)
  • container2 (Java應用程序)
  • container3 (作為純存儲量)

現在,在使用Apache Camel的container2運行的Java應用程序應偵聽container1卷上的文件添加並將其傳輸到container3卷。

我當時正在考慮在存儲容器上安裝FTP映像,但是我認為它們的卷可以暴露出來。

這個用例的更好方法是什么?

您只需添加指向同一目錄的卷即可:

  • 容器1:/ opt / deposite:/ opt / data
  • 容器3:/ opt / done:/ opt / data

容器2可以有3個體積:

  • 第1卷供他自己的數據/ opt / app:/ opt / app
  • 卷2與容器1共享的卷: / opt / deposite:/ opt / deposite
  • 第3卷與容器2共享的卷: / opt / done:/ opt / done

您的java應用程序可以簡單地用批處理檢查卷2的文件夾,並將文件放在卷3的文件夾中

是的,你是對的。 它們的數量可以被公開,這並不難實現。 例如,您可以嘗試運行下一個准備好的docker-file:

#########################################################################
version: '3.3'                                                            
services: 
#########################################################################

  container-1:
    container_name: "test-container1"
    image: ubuntu:16.04
    volumes:
      - "$HOME/data/container-1:/root/data"

    command: ["/bin/bash", "-c", "echo 'Hello world!' > \
      /root/data/someFileFromContainer-1"]
#########################################################################    

  container-2:
    container_name: "test-container2"
    image: ubuntu:16.04
    depends_on:
      - container-1
    volumes:
      - "$HOME/data:/root/data"

    command: ["/bin/bash", "-c", "/bin/sleep 3s && \
      mv /root/data/container-1/someFileFromContainer-1 /root/data/container-3/"]
#########################################################################

  container-3:
    container_name: "test-container3"
    image: ubuntu:16.04
    volumes:
      - "$HOME/data/container-3:/root/data"
    depends_on:
      - container-2

    command: ["/bin/bash", "-c", "sleep 5s && \ 
      cat /root/data/someFileFromContainer-1"]
#########################################################################

嘗試執行以查看結果(來自在第一個容器/“ Hello world!”中創建的文件中的數據):

docker-compose up -d && docker logs -f test-container3

  • $ HOME / data / container-1安裝到容器1
  • $ HOME /安裝在container-2上的數據(它可以查看子文件夾並在其中運行)
  • $ HOME / data / container-3安裝到container-3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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