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