我是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
是否已准备好投入生产?
答案 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主机中看到此数据。