簡體   English   中英

如何使用 Compose 將服務器目錄掛載到 Docker 容器?

[英]How do I mount a server directory to a Docker Container with Compose?

我正在嘗試將我組織服務器 ( Y:/some/path ) 中的目錄掛載到 docker 容器。 我的docker-compose.yml看起來像這樣:

services:

  dagit:
    volumes:
      - type: bind
        source: Y:/some/path
        target: /data
    build:
      context: .
      dockerfile: Dagit.Dockerfile
    ports:
      - "3000:3000"
    container_name: dagit-container

  dagster:
    volumes:
      - type: bind
        source: Y:/some/path
        target: /data
    build:
      context: .
      dockerfile: Daemon.Dockerfile
    container_name: dagster-container
    tty: true
    env_file: .env

我已與 Docker 共享Y:/some/path docker compose up -d --build ,我收到以下錯誤: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /host_mnt/uC/my_ip/some/path 如何正確掛載這樣的目錄? 此外,在頂級volumes鍵中聲明此掛載並在兩個服務中引用它的正確方法是什么,因此我不必復制代碼?

取以下 docker-compose.yml 文件:

version: '3.9'

services:
  DockerA:
    image: ubuntu:latest
    container_name: DockerA
    command: ["sleep", "300d"]
    volumes:
      - "./data:/root/data"

  DockerB:
    image: ubuntu:latest
    container_name: DockerB
    command: [ "sleep", "300d" ]
    volumes:
      - "./data:/root/data"

volumes:
  data:

在該文件(同一目錄)旁邊創建一個名為“數據”的目錄。

現在啟動碼頭工人:

docker-compose up -d

如果你進入 DockerA 容器並在數據目錄中創建一些東西:

docker exec -it DockerA /bin/bash
# cd /root/data
# echo "Hello World!" > x.txt

然后 go 進入 DockerB

docker exec -it DockerB /bin/bash
# cd /root/data
# cat x.txt

您將看到 x.txt 的相同內容。

現在回到主機並檢查 ./data 目錄中的 x.txt 文件。 也是一樣的內容。

如果您在 Host 上編輯 x.txt,它將立即反映在 DockerA 和 DockerB 中。

假設您的企業共享是 Windows/SAMBA CIFS/SMB-Share,直接將其添加為卷,而不是通過 Windows 掛載。

volumes:
  shared_folder:
    driver_opts:
      type: cifs
      o: username=smbuser,password=smbpass,uid=UID for mount,gid=gid for mount,vers=3.0,rw
      device: //hostname_or_ip/folder

版本取決於您的服務器類型,rw = readwrite 然后 map 卷

services:
  dagit:
    volumes:
      - shared_folder:/root/data

暫無
暫無

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

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