Не считая хост директорий, есть 2 способа делать персистанс в докере: (1) дата-контейнеры и (2) вольюмы. На примере композа, рассмотрим оба варианта.
1. Дата-контейнеры
Самый старый и, на мой взгляд, костыльный способ. Заключается в том, что данные будут сохраняться в контейнере в котором не запущен процесс, и по факту контейнер остановлен. В качестве такого контейнера можно использовать «основной» имедж или использовать специальный, как 
tianon/true.
docker-compose.ymlversion: '2'
services:
  web:
    image: 'nginx'
    volumes_from:
      - 'data'
  data:
    build: './public_html'
public_html/DockerfileFROM nginx
ADD index.html /var/www/public_html
CMD /bin/true
Обратите внимание на директиву 
CMD в Докерфайле дата-контейнера. Не смотря на то что исходным имеджем является 
nginx, как и в сервисе 
web, команда 
/bin/true не запустит процесс, а лишь сигнализирует докеру об успешной сборке контейнера. 
docker-compose ps покажет что дата-контейнер иммет статус типа 
Exit..., и это именно то состояние которого мы ищем для этого контейнера.
Прим.: для tianon/true директиву CMD указывать не обязательно, однако придётся указать директиву VOLUME, так как в отличии от основного имеджа, она не указана в исходном Докерфайле.2. Вольюмы
Или, как их называют официально, именованные вольюмы. Более очевидный способ работать с персистансом.
docker-compose.ymlversion: '2'
services:
  web:
    image: 'nginx'
    volumes:
      - 'web_data:/var/www/public_html'
volumes:
  web_data:
Такая конфигурация автоматически создаст вольюм с именем 
web_data и замапит его на папку 
/var/www/public_html внутри контейнера 
web, при старте композа. Обратите внимание, что в этом примере вольюм обозначен как ключ без значений, это валидный ямл синтаксис, и, в данном случае, означает что композ сфолбэчит опции вольюма на дефолтные, обязательной из которых является 
driver: 'default'. В случае если вы поднимаете композ локально или на удалённой докер машине, дефолтный драйвер вам подойдёт, если только вы не знаете что нет.
Прим.: из драйверов, которые представляют особый интерес, во всяком случае мне, драйвер для NFS и DigitalOcean Block Storage.
Дефолтное поведение докера — не удалять ничего пока пользователь не попросит этого эксплицитно, это распространяется как на дата-контейнеры, так и на вольюмы.