Docker compose 不会在容器重新创建时重用预期的匿名主机卷

Docker compose 不会在容器重新创建时重用预期的匿名主机卷

我有一个 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 数据的路径。如果您指定容器路径而没有主机路径,就会发生这种情况。

如果希望数据持久,则必须指定在主机上存储数据的源:路径或命名卷。

相关内容