Предоставление Я уже правильно изменил часовой пояс контейнера докера. Нужно ли устанавливать сервер NTP внутри контейнера докера, чтобы периодически синхронизировать время или контейнер будет синхронизировать время со своей главной машиной?
Будет ли время автоконфигурации контейнера докерером с главной машиной?
Ответ 1
Если вы находитесь на 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)), по-видимому, имеют возможность обнаруживать, когда был временной разрыв, и соответственно корректировать. Таким образом, это уже не должно быть проблемой... hooray!!
Ответ 2
Простейшим решением является запуск вашего контейнера с опцией -v /etc/localtime:/etc/localtime:ro
. Таким образом:
#run without tz info:
docker run --rm -t -i ubuntu date
Wed Apr 2 18:40:07 UTC 2014
# run with tz info:
docker run --rm -t -i -v /etc/localtime:/etc/localtime:ro ubuntu date
Wed Apr 2 11:40:29 PDT 2014
Ответ 3
https://github.com/sameersbn/docker-gitlab/issues/77
См. ответ sameersbn.
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
Ответ 4
В Docker для Mac OS X Beta я испытал значительный дрейф на виртуальной машине, основанной на Alpine Linux. Из Alpine Linux FAQ вы можете синхронизировать часы VM с помощью следующей команды.
ntpd -d -q -n -p pool.ntp.org
Однако получение доступа к терминалу на виртуальной машине - это еще один вопрос, который можно сделать, если вы используете команду экрана.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Этот путь является символической ссылкой, которая в моей системе указывает на /dev/ttys003
.
Как только вы войдете, обратите внимание, что moby login
просто root
без пароля. После того, как вы закончите, CTRL-A, D отключится от сеанса экрана.
ПРИМЕЧАНИЕ. Это было документировано на Docker для Mac Trouble Shooting, но это, похоже, было снято. Мне посчастливилось показать его, пока он находится на Dockercon 2016. Кажется, Docker пытается полностью отвлечь VM от опыта, что объясняет, почему это уже не документировано.