我有一个 Ansible 容器,当我开发了一个 docker-compose 文件时,创建了该容器。
version: '2'
services:
ansible_tower:
image: ybalt/ansible-tower:latest
ports:
- "333:443"
volumes:
- ./certs:/certs
- /var/lib/postgresql/9.4/main
- ./backup:/home/backup
privileged: true
container_name: ansible_tower
restart: always
但是当我删除容器并重新创建容器时,所有卷数据都会丢失。(PostgreSQL 数据将丢失。)经过一些调试后,我发现在重新创建容器时,主机卷会与新创建的卷重新映射。(未命名的主机卷名称会更改)但这不是我所期望的,我认为主机卷将在容器重新创建时被重新使用。我在这里错过了什么。因此,所有数据都将丢失。
答案1
docker-compose.yml 仅指定了每次启动容器时在新的临时卷中创建 PostgreSQL 数据的路径。如果您指定容器路径而没有主机路径,就会发生这种情况。
如果希望数据持久,则必须指定在主机上存储数据的源:路径或命名卷。