Укажите местоположение Docker изображений, контейнеров и томов для каждого docker -compose.yml? - PullRequest
0 голосов
/ 02 февраля 2020

На машине с Ubuntu 18.04.3 с новым диском, подключенным и смонтированным на /mnt/elk, можно настроить docker-compose.yml так, чтобы все образы, контейнеры и тома, связанные с этим docker-compose.yml, были сохранены в /mnt/elk?

В настоящее время все данные, похоже, хранятся на первом диске в /var/lib/docker/overlay, /var/lib/docker/containers и /var/lib/docker/volumes, и этот диск почти заполнен. Таким образом, мы хотим переместить docker -композиционную настройку (файл показан ниже) с первого диска на новый диск в /mnt/elk.

Другие docker -композитные настройки могут оставаться на первом диске. Можно хранить одно и то же изображение на обоих дисках, если для другого docker -compose.yml на первом диске требуется тот же образ.

Спасибо!


docker-compose.yml для использования в /mnt/elk

С https://github.com/deviantony/docker-elk/blob/master/docker-compose.yml

version: '3.2'

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
      # Use single node discovery in order to disable production mode and avoid bootstrap checks
      # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
      discovery.type: single-node
    networks:
      - elk

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      - "5000:5000"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
        read_only: true
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:

1 Ответ

1 голос
/ 02 февраля 2020

См. Глобальную docker конфигурацию демона data-root (можно настроить только один данные root):

- data- root string Root каталог постоянного Docker состояние (по умолчанию "/ var / lib / docker")

Остановить docker демон, правильно настроить docker демон , например, /etc/docker/daemon.json:

{
  "data-root": "/mnt/elk"
}

Скопируйте данные из /var/lib/docker в /mnt/elk и попробуйте запустить демон docker. У вас могут быть проблемы с драйверами хранилища (вам может потребоваться отформатировать новую ФС с соответствующими параметрами или может потребоваться явно указать используемый драйвер хранилища). Примечание: просто copy, потому что вы хотите иметь резервную копию, если что-то идет не так. Вы можете потерять все тома, образы, контейнеры и т. Д., Поэтому настоятельно рекомендуется выполнять резервное копирование.

...