永久Docker卷

时间:2018-12-13 17:16:09

标签: apache docker containers persistence

我正在尝试构建Apache WebDAV私有云服务器。

我所有的文件都在/ usr / John /目录中,我可以将该位置挂载到供容器使用的位置。问题在于,我还将通过该服务器添加新文件,但是无论如何,它们都只保留在容器中。有没有办法在主机目录(/ usr / John /)中也反映相同的新文件?

我可以经常性地进入这个容器并将所有文件CP到主机目录,但这不是一个很好的解决方案。

1 个答案:

答案 0 :(得分:0)

使用Docker卷。容器生成的所有持久性数据将保存到var/lib/docker/volumes。如果您使用的是docker-compise,则可以执行以下操作。这里有3卷,我将其命名为tomcat-datahost-uploadtomcat-webapps。我在tomcat-data/home/foo/upload/usr/local/tomcat/webapps中放入的所有数据都将存储在var/lib/docker/volumes内部的主机上。因此,即使容器发生故障并启动另一个容器,这些目录中的所有数据也将保留。如果您有任何疑问,请告诉我。

您还可以将装载主机目录直接绑定到docker容器上。让我知道您是否有任何疑问

version: '3.2'
services:
  tomcat:
    image: "ciena/tomcat"
    volumes:
      - tomcat-data:/tomcat-data
      - host-upload:/home/foo/upload
      - tomcat-webapps:/usr/local/tomcat/webapps
    ports:
      - target: 8080
        published: 8080
        protocol: tcp
        mode: ingress
      - target: 2222
        published: 22
        protocol: tcp
        mode: ingress
    environment:
      - JAVA_MIN_HEAP=256m
      - JAVA_MAX_HEAP=512m
    deploy:
      placement:
        constraints:
          - node.role == manager
      replicas: 1
      resources:
        limits:
          memory: 1024M
          cpus: '0.5'
        reservations:
          memory: 512M
          cpus: '0.001'
      restart_policy:
        condition: any
        delay: 5s
        max_attempts: 3
        window: 60s
volumes:
  tomcat-data:
  host-upload:
  tomcat-webapps:
networks:
  default: