Нормально ли что при работе через Docker у меня заметно тормозит app?

Доброе время суток!

Начал изучать докер. После суток мучений я запустил проект в полном стеке с использованием докера. Но теперь я вижу увеличение времени ответа от сервера. App работало моментально на локальной машине на стандартном стеке nginx + php-fpm 7 + mysql. После настройки подобного стека на докере все работает заметно медленнее. Как можно это пофиксить?

version: '2'
services:
  nginx:
    image: jboesl/docker-nginx-headers-more
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./:/site
      - ./docker/nginx:/etc/nginx/conf.d
    depends_on:
      - fpm
    links:
      - fpm
  fpm:
    build: ./docker/php
    expose:
      - "9000"
    volumes:
      - ./:/site
    links:
      - mysql
  mysql:
      image: mysql
      ports:
        - "3306:3306"
      environment:
          MYSQL_ROOT_PASSWORD: "root"
          MYSQL_DATABASE: "portal"
          MYSQL_USER: "app"
          MYSQL_PASSWORD: "app"
      volumes:
        - mysqldata:/var/lib/mysql
volumes:
  mysqldata:
    driver: "local"
  • Вопрос задан
  • 4237 просмотров
Решения вопроса 2
DevMan
@DevMan
a хостовая система какая?
следует понимать, что везде кроме пингвина докер - это виртуализация и, соответственно, дополнительный оверхед и/или неожиданные тормоза (например, в макоси "виртуальный" докер работает быстрее "нативного").
Ответ написан
@lexa4lexa
Если у вас Linux, то накладные расходы там мизерные, вы и не заметите без тестов специальных
Если у вас MacOSX или Windows - то используется полноценная виртуализация. Для отладки это годится. Но в реальности Docker будет развернут на сервере Linux. И тормозить перестанет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mzG2Gzm
Docker - это средство контейнеризации исключительно Linux (хотя и FreeBSD можно там взвести внутри).
Таким образом, изнчально нам нужно РАБОТАЮЩЕЕ ядро Linux.
Если вы используете Docker под Linux - проблем с этим нет. Запуск контейнера почти мгновенный.
Если вы используете Docker под Windows или MacOSX, то нужно сначала загрузить сам Linux для того, чтобы уже там загружать контейнеры.
В реальных системах боевых - Docker запускают ТОЛЬКО на Linux серверах. Но для отладки вы можете делать это где угодно. Только смиритесь с тем, что если это будет не под Linux, то запуск будет долгим.

Резюмирую:

Под Linux запуск приложения в Docker - это всего лишь контейнер, то есть всего лишь изоляция вызовов API операционной системы.

Под не-Linux запуск приложения в Docker требует изначально запуска самого Linux в виртуальной машине.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы