对不使用docker-compose中的卷有什么影响?

时间:2018-11-28 23:11:35

标签: docker docker-compose

我是Docker的新手,多么棒的工具!。遵循Django教程之后,他们的文档提供了基本的docker-compose.yml,其外观类似于我创建的以下内容。

version: '3'

services:
  web:
    build: .
    container_name: web
    command: python manage.py migrate
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./src:/src
    ports:
      - "8000:8000"
    depends_on:
      - postgres
  postgres:
    image: postgres:latest
    container_name: postgres
    environment:
      POSTGRES_USER: my_user
      POSTGRES_PASSWORD: my_secret_pass!
      POSTGRES_DB: my_db
    ports:
      - "5432:5432"

但是,在我看到的每个docker-compose文件中,都添加了以下内容:

volumes:
  - ./postgres-data:/var/lib/postgresql/data

这些卷有什么用?这是否意味着如果我现在重新启动postgres容器,我的所有数据都将被删除,但是如果我有卷,则不是吗?

我的docker-compose.yml是否已准备好投入生产?

1 个答案:

答案 0 :(得分:2)

  

这些卷有什么用?

卷将数据从容器持久化到Docker主机。

此:

volumes:
  - ./postgres-data:/var/lib/postgresql/data

意味着您容器中的/var/lib/postgresql/data将保留在Docker主机中的./postgres-data中。

@Dan Lowe评论的内容是正确的,如果在没有卷的情况下执行docker-compose down,则所有丢失容器的数据将丢失,但是如果您拥有volumes目录,则指定的文件将丢失。存放在您的Docker主机中

即使容器不再存在,您也可以在/var/lib/docker/volumes/<your_volume_name>/_data的Docker主机中看到此数据。