docker - 如何使用 Compose 将服务器目录挂载到 Docker 容器?
问题描述
我正在尝试将我组织服务器 ( 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
我已Y:/some/path
与 Docker 共享。在 上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
然后进入 DockerB
docker exec -it DockerB /bin/bash
# cd /root/data
# cat x.txt
您将看到 x.txt 的相同内容。
现在回到主机并检查 ./data 目录中的 x.txt 文件。也是一样的内容。
如果您在 Host 上编辑 x.txt,它将立即反映在 DockerA 和 DockerB 中。
推荐阅读
- css - 如何将多个内联样式作为道具应用到组件?
- json - 是否接受 XML 并使用 JSON 切换协议进行响应?
- facebook - 在 ionic 4 中使用 facebook 登录
- c++ - EEPROM协议误解
- python-3.x - 如何在 tensorflow 2 Tensorflow 2 / Keras 中进行自定义验证步骤?
- c# - C# 实体框架 AddOrUpdate 错误仍然存在?
- flutter - 为什么 BlocBuilder 在使用 get_it 时卡在初始状态?
- r - 在R中将一个变量拆分为两个新变量
- reactjs - 移动鼠标时从 react-leaflet 获取纬度和经度
- tcp - 根据 RFC 5737,我可以从无法路由的地址中获得什么超时行为?