Давая, я уже правильно изменил часовой пояс контейнера докеров. Нужно ли мне устанавливать NTP-сервер внутри контейнера докеров для периодической синхронизации времени, или контейнер будет синхронизировать время со своей хост-машиной?
Если вы используете OSX и запускаете boot2docker, см. Эту проблему: https://github.com/boot2docker/boot2docker/issues/290
Синхронизация времени становится проблемой, потому что хост boot2docker имеет сдвиг времени, когда ваша ОС спит. Синхронизацию времени с вашим докер-контейнером нельзя разрешить, запустив ваш контейнер с-v /etc/localtime:/etc/localtime:ro
Вместо этого на данный момент вам нужно периодически запускать это в OSX:
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Обновление для пользователей Kitematic
Если вы используете Kitematic , который теперь является предлагаемым механизмом для запуска и запуска Docker в OSX, вам придется периодически запускать эту команду:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
Или для более старых версий докера
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
Обновление для пользователей нового нативного Docker для OSX
В новой бета-версии Docker покончено с VirtualBox и Docker Machine. Последние сборки докера (в настоящее время 1.12.1-beta25 (сборка: 11807)), похоже, имеют возможность определять, когда произошел разрыв во времени, и соответствующим образом корректировать. Таким образом, это больше не должно быть проблемой ... ура !!
https://github.com/sameersbn/docker-gitlab/issues/77
См. Ответ sameersbn.
источник
Кажется, что самым простым решением является запуск вашего контейнера с
-v /etc/localtime:/etc/localtime:ro
опцией. Таким образом:источник
--privileged
режиме).date
на хост-машину в свой MWE, поскольку в противном случае, возможно, неясно, получает ли контейнер свое время от хоста.setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
В Docker для Mac OS X Beta я испытал значительный дрейф виртуальной машины, основанной на Alpine Linux. Из Alpine Linux FAQ вы можете синхронизировать часы виртуальной машины с помощью следующей команды.
Однако получение доступа к терминалу на виртуальной машине - это еще один вопрос, который можно решить, если использовать команду screen.
Этот путь является символической ссылкой, которая в моей системе указывает на
/dev/ttys003
.Как только вы войдете, обратите внимание, что у
moby login
него простоroot
нет пароля. После того, как вы закончите, CTRL-A, D отключится от сеанса экрана.ПРИМЕЧАНИЕ. Раньше это документировалось в разделе «Устранение неполадок Docker для Mac», но, похоже, оно было удалено. Мне посчастливилось показать это на Dockercon 2016. Похоже, Docker пытается полностью исключить виртуальную машину из опыта, что объясняет, почему она больше не документирована.
источник
Текущее решение для смещения времени osx на докере (апрель 2018 г.):
У меня есть Mac на сервере NTP, но этот фиксированный дрейф часов с контейнерами:
С https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
Если ваша система не имеет доступа к серверу NTP, то после перехода в спящий режим время, видимое Docker для Mac, может значительно не синхронизироваться с хостом. Кроме того, во время использования время может медленно не синхронизироваться. Чтобы вручную сбросить время после гибернации, запустите:
Или, чтобы решить обе проблемы, вы можете добавить локальные часы в качестве низкоприоритетного (высокого уровня) резервного источника времени NTP для хоста. Для этого отредактируйте /etc/ntp-restrict.conf хоста, чтобы добавить:
Затем перезапустите службу NTP с помощью:
источник
использование docker-compose:
Добавьте
/etc/localtime:/etc/localtime:ro
кvolumes
атрибуту.Посмотрите на эту ссылку, чтобы продемонстрировать пример.
источник