LINUX.ORG.RU

Вопрос работы Docker

 


0

2

Добрый день коллеги.

Проконсультируйте меня по следующему вопросу пожалуйста.

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

И через какое-то время обратил внимание, что получается дублирование информации. Docker хранит данные в смонтированном каталоге, скажем ~/database и в каталоге /var/lib/docker/containers.

Можно ли как-то произвести настройку, чтоб данные хранились только в смонтированном томе ~/database? А то из-за этого дублирования быстро забивается память на жестком диске.

Заранее спасибо.

Ответ на: комментарий от Deleted

Конфиг docker-compose

version: '3.3'

services:

elasticsearch: image: elasticsearch:6.5.1 ports: - «9200:9200» - «9300:9300» volumes: - ./config/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./database/elasticsearch/db:/usr/share/elasticsearch/data environment: ES_JAVA_OPTS: "-Xmx7g -Xms7g" networks: - elk

logstash: image: logstash:6.5.1 ports: - «9988:9988» - «9600:9600» volumes: - ./config/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml - ./config/logstash/pipeline:/usr/share/logstash/pipeline:ro - ./patterns:/usr/share/logstash/patterns environment: LS_JAVA_OPTS: "-Xmx7g -Xms7g" networks: - elk depends_on: - elasticsearch

kibana: image: kibana:6.5.1 # ports: # - «5601:5601» volumes: - ./config/kibana/config:/usr/share/kibana/config:ro networks: - elk depends_on: - elasticsearch

nginx: image: nginx ports: - «80:8080» volumes: - ./config/nginx/config/kibana.conf:/etc/nginx/nginx.conf - ./config/nginx/config/passwd/:/etc/nginx/ networks: - elk depends_on: - kibana

networks: elk: driver: bridge

usewebtechnology
() автор топика

Это разные данные. В ~/database у тебя хранятся файлы БД. А в /var/lib/docker/containers данные контейнеров, можешь воспринимать это как файлы ОС. Так что сократить объем занятого дискового пространства за счет хранения файлов БД внутри контейнера не получится. Кроме того, в общем случае так вообще делать не стоит, так как тогда данные будут теряться при удалении контейнера (при обновлении возможно тоже, не помню точно).

А сократить использование дискового пространства можно при создании контейнеров на основе образов slim и alpine. Например, python:3-alpine

HerrWeigel ★★★★
()

Нормально форматирование сделай, покажи как композ запускаешь, покажи, что у тебя /var/lib/docker/containers подробнее

najar
()
Ответ на: комментарий от najar

Композ запускаю sudo docker-compose up -d

sudo du -sh /var/lib/docker/containers/a065ac9b05f7b26b9b75aa681fbf307d788213c30a90e6287b7d6cf45e815b2f 162G /var/lib/docker/containers/a065ac9b05f7b26b9b75aa681fbf307d788213c30a90e6287b7d6cf45e815b2

version: '3.3'

services:

elasticsearch:

image: elasticsearch:6.5.1

ports:

- «9200:9200»

- «9300:9300»

volumes:

-./config/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

- ./database/elasticsearch/db:/usr/share/elasticsearch/data environment:

ES_JAVA_OPTS: "-Xmx7g -Xms7g"

networks:

- elk

logstash:

image: logstash:6.5.1

ports:

- «9988:9988»

- «9600:9600»

volumes:

-./config/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml

-./config/logstash/pipeline:/usr/share/logstash/pipeline:ro

-./patterns:/usr/share/logstash/patterns

environment:

LS_JAVA_OPTS: "-Xmx7g -Xms7g"

networks:

- elk

depends_on:

-elasticsearch

kibana:

image: kibana:6.5.1

ports:

- «5601:5601»

volumes:

- ./config/kibana/config:/usr/share/kibana/config:ro

networks:

- elk

depends_on:

- elasticsearch

nginx:

image: nginx

ports:

- «80:8080»

volumes:

- ./config/nginx/config/kibana.conf:/etc/nginx/nginx.conf

- ./config/nginx/config/passwd/:/etc/nginx/

networks:

- elk

depends_on:

- kibana

networks:

elk:

driver: bridge

usewebtechnology
() автор топика
Ответ на: комментарий от usewebtechnology

a065ac9b05f7b26b9b75aa681fbf307d788213c30a90e6287b7d6cf45e815b2f-json.log

Вот этот файл занимает большую часть места в папке /var/lib/docker/container

Как я понимаю это что-то типо базы данных в docker?

usewebtechnology
() автор топика
Ответ на: комментарий от najar

В docker-compose добавил для каждого сервиса правила логгирования:

elasticsearch:
    image: elasticsearch:6.5.1
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./config/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
#      - ./database/elasticsearch/db:/usr/share/elasticsearch/data
    environment:
      ES_JAVA_OPTS: "-Xmx7g -Xms7g"
    networks:
      - elk
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "5"

Но он почему-то их не подхватывает. Делал согласно официальной документации.

services:
  some-service:
    image: some-service
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"
usewebtechnology
() автор топика
Ответ на: комментарий от usewebtechnology

Это лог. Текстовый. Какая-то ваша служба в контейнере срёт логами на каждый чих и всё это пишется постоянно на диск - забивая место.

menangen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.