【问题标题】:Docker keeps data but creates a new volume from host folder every "run"Docker 保留数据,但每次“运行”时都会从主机文件夹创建一个新卷
【发布时间】:2021-03-11 14:12:13
【问题描述】:

这似乎是我对音量的误解。我有一个包含两个服务的 docker-compose 文件:jobs 是从 Dockerfile 构建的 Flask api(见下文),mongo 来自官方 MongoDb 图像。

我有两个卷:- .:/code 从我的主机工作目录链接到容器中的 /code 文件夹,以及一个命名卷 mongodata

version: "3"
services: 
  jobs:
    build: .
    ports: 
      - "5000:5000"
    volumes: 
      - .:/code
    environment: 
      FLASK_ENV: ${FLASK_ENV}
      FLASK_APP: ${FLASK_APP}
    depends_on: 
      - mongo
  mongo:
    image: "mongo:3.6.21-xenial"
    restart: "always"
    ports: 
      - "27017:27017"
    volumes: 
      - mongodata:/data/db
    environment: 
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
volumes: 
  mongodata:

jobs 服务的 Dockerfile:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=job-checker
ENV FLASK_ENV=development
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run", "--host=0.0.0.0"]

每次我删除这些容器并重新运行时,一切都很好,我的数据仍然在mongodata 卷中。但是当我检查卷列表时,我可以看到一个新卷是从- .:/code 创建的,卷名很长,例如:

$ docker volume ls
DRIVER              VOLUME NAME
local               55c08cd008a1ed1af8345cef01247cbbb29a0fca9385f78859607c2a751a0053
local               abe9fd0c415ccf7bf8c77346f31c146e0c1feeac58b3e0e242488a155f6a3927
local               job-checker_mongodata

在这里我运行了docker-compose up,然后我删除了容器,然后再次运行,所以我的工作文件夹中有两个卷。

每次向上创建一个新卷而不是使用前一个卷是否正常?

谢谢

【问题讨论】:

  • 请包含您的 Dockerfile

标签: docker docker-compose docker-volume


【解决方案1】:

Docker Hub mongo image 文档末尾隐藏的是注释:

此图像还为/data/configdb 定义了一个卷...

镜像的 Dockerfile 又包含line

VOLUME /data/db /data/configdb

当您启动容器时,您将自己的卷挂载到 /data/db 上,但不会在第二条路径上挂载任何内容。这会导致 Docker 在那里创建一个匿名卷,这是您看到的只有一个长十六进制 ID 的卷。

删除多余的卷应该是安全的,尤其是当您确定它们没有附加到容器并且它们没有有趣的内容时。

此行为与另一个容器中的绑定挂载无关;绑定挂载根本不会出现在docker volume ls 列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多