Комментарии 16
The default Docker setup on Windows and OS X uses a VirtualBox VM to host the Docker daemon.Это было актуально во времена Docker Toolbox и уже давно не соответствует действительности: docs.docker.com/docker-for-mac/docker-toolbox.
С выходом нативного Docker for Mac на HyperKit никаких проблем не возникает.
+1
Здравствуйте) Можно глупый вопрос, который меня давно гложит?
Вот подняли мы всё это чудо из нескольких связанных образов на продакшене. А потом у нас возникла необходимость обновить какой-то из образов. Как сделать всё это без остановки всего продакшена?
+1
Сразу пришло в голову haproxy и скрипт, который будет аккуратно перезапускать контейнеры.
В случае с compose можно делать так (решение не сильно отличается): github.com/docker/compose/issues/734#issuecomment-167392770
Для себя закинул еще одно очко в копилку «docker — для удобной/быстрой разработки/тестирования, но не для продакшена»
В случае с compose можно делать так (решение не сильно отличается): github.com/docker/compose/issues/734#issuecomment-167392770
Для себя закинул еще одно очко в копилку «docker — для удобной/быстрой разработки/тестирования, но не для продакшена»
0
обычно на продакшне это все обмазано docker-swarm либо чем-то подобным (kubernetes и т.д.). В этом случае после обновления образа и пуша его в registry, на swarm-ноде делается update — и оно заменяет контейнеры один за другим с zero downtime
+2
Потому, если вы попали сюда в поиске рецептов, как работать с Docker под Windows, то у меня плохие новости, здесь вы их не найдете.
А у меня плохие новости для вас, — нельзя так долго мариновать статью. Никакие рецепты давно не нужны. Docker на Windows в Hyper-V работает отлично.
+2
Хотелось бы услышать мнение чем Docker лучше чем Vagrant?
0
Pitfails
Может Pitfalls?
0
Забыли в Pitfails добавить, что на маке скорость записи из контейнера на диск хоста (добавленный как VOLUME) очень медленная, для понимания масштабов — примерно в 50-100 раз.
Вот пример записи данных на 102MB (на диск контейнера — 0.3сек, на диск хоста — 44сек.):
На официальном форуме развернулась огромная дискуссия на эту тему и судя по ней прогнозы так себе.
Поэтому разработка может стать неприятной когда работа идет с процессом связанным с записью данных из контейнера на диск хоста.
У меня, например, на одном проекте обновление страницы сайта запущенного в docker занимает около 1.5 секунды (из-за записи данных в mysql базу, которая лежит на хосте и монтируется через VOLUME), если тот же сайт запускать на локальном сервере, обновление страницы происходит моментально. Все это очень мешает при отладке когда часто приходится обновлять страницу в браузере.
Вот пример записи данных на 102MB (на диск контейнера — 0.3сек, на диск хоста — 44сек.):
root@cdb2179ff:/var/www/temp# time dd if=/dev/zero of=test.dat bs=1024 count=100000
102400000 bytes (102 MB, 98 MiB) copied, 44.3007 s, 2.3 MB/s
real 0m44.310s
user 0m0.080s
sys 0m3.060s
root@cdb2179ff:/tmp# time dd if=/dev/zero of=test.dat bs=1024 count=100000
102400000 bytes (102 MB, 98 MiB) copied, 0.375994 s, 272 MB/s
real 0m0.381s
user 0m0.030s
sys 0m0.340s
На официальном форуме развернулась огромная дискуссия на эту тему и судя по ней прогнозы так себе.
Поэтому разработка может стать неприятной когда работа идет с процессом связанным с записью данных из контейнера на диск хоста.
У меня, например, на одном проекте обновление страницы сайта запущенного в docker занимает около 1.5 секунды (из-за записи данных в mysql базу, которая лежит на хосте и монтируется через VOLUME), если тот же сайт запускать на локальном сервере, обновление страницы происходит моментально. Все это очень мешает при отладке когда часто приходится обновлять страницу в браузере.
+2
Кстати использование && еще и неплохо уменьшает размер докерфайла.
0
Согласен с автором во всем, сам въезжал в docker примерно 3 дня с параллельными попытками написания Dockerfile для сборки нужного мне image. Однако советую сразу пристальное внимание обратить на инструкцию CMD, без правильного написания которой запущенный контейнер будет сразу останавливаться, а вместо deprecated MAINTAINER использовать все разнообразие инструкции LABEL.
0
Вторую часть дождёмся?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Основы Docker за Х часов и Y дней