Docker-Compose:如何将卷从主机映射到容器?

问题:

我想通过使用docker-compose的特定容器从docker主机共享一个文件夹。 运行MongoDB的容器应将其数据文件放置在/ var / lib / mongodb中,但是该文件夹应该挂载到hosts文件夹/ var / lib / mongodb。

但是它仍然是容器中的一个本地目录,而不是主机的共享目录。

有时也会以下面的警告结束:

警告:服务“mongodb”使用前一个容器中的“/ var / lib / mongodb”卷。 主机映射“name_dbvolume”不起作用。 删除现有容器(使用docker-compose rm mongodb )以使用主机卷映射。

泊坞窗,compose.yml

 version: '2' services: loopback: build: . expose: - "80" - "443" - "28015" - "29015" ports: - 3000:3000 links: - mongodb environment: VIRTUAL_HOST: api.xxxxxx.com VIRTUAL_PORT: 3000 LETSENCRYPT_EMAIL: yyyyyy@xxxxxxx.com LETSENCRYPT_HOST: api.xxxxx.com mongodb: build: ./MongoDB ports: - "27017:27017" - "27018:27018" - "27019:27019" - "28017:28017" volumes: - dbvolume:/var/lib/mongodb volumes: dbvolume: 

Dockerfile for MongoDB-Container:

 FROM mongo:latest RUN mkdir -p /var/lib/mongodb && \ touch /var/lib/mongodb/.keep && \ chown -R mongodb:mongodb /var/lib/mongodb ADD mongodb.conf /etc/mongodb.conf VOLUME [ "/var/lib/mongodb" ] # EXPOSE 27017 USER mongodb WORKDIR /var/lib/mongodb ENTRYPOINT ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"] CMD ["--quiet"] 

mongodb-container被configuration为MongoDB使用/ var / lib / mongodb作为数据目录。 使用下面的命令,我们尝试从主机使用这个文件夹:

VOLUME [“/ var / lib / mongodb”]

我在这里错了什么?

您的撰写configuration设置一个名为dbvolume的命名数据卷

一个命名卷默认存储在/var/lib/docker

 → docker volume inspect dbvolume [ { "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/dbvolume/_data", "Name": "dbvolume", "Options": {}, "Scope": "local" } ] 

将一个主机目录作为一个卷挂载在一个组合文件中稍有不同。

  volumes: - /var/lib/mongodb:/var/lib/mongodb 

源代码仍在左侧,但您指定了完整path而不是名称。