回答:
boot2dockerを実行しているOSXを使用している場合は、この問題を参照してください:https : //github.com/boot2docker/boot2docker/issues/290
OSがスリープしている間、boot2dockerホストには時間のずれがあるため、時刻同期が問題になります。dockerコンテナーとの時刻同期は、コンテナーを-v /etc/localtime:/etc/localtime:ro
代わりに、今のところ、OSXで定期的に実行する必要があります。
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Kitematicのユーザー向けの更新
あなたが実行している場合Kitematic今起床し、OSXにドッカー上で実行するための提案機構であり、あなたが定期的にこのコマンドを実行する必要があります。
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
または、古いバージョンのdockerの場合
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
OSX用の新しいネイティブDockerのユーザー向けの更新
新しいDocker Betaは、VirtualBoxとDocker Machineを廃止します。dockerの最新ビルド(現在、1.12.1-beta25(ビルド:11807))には、時間の不連続が発生したことを検出し、それに応じて調整する機能があるようです。したがって、これはもはや問題ではありません...
https://github.com/sameersbn/docker-gitlab/issues/77
sameersbnの答えを見てください。
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
最も簡単な解決策は、-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
--privileged
モードで実行されている場合を除いて、コンテナは変更できません)。
date
コンテナーがホストから時間を取得していることが明確でない場合があるため、MWEのホストマシンへの呼び出しを含める必要がありました。
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
Mac OS Xベータ版のDockerでは、Alpine Linuxに基づくVMで大幅なドリフトが発生しました。Alpine Linux FAQから、次のコマンドでVMのクロックを同期できます。
ntpd -d -q -n -p pool.ntp.org
ただし、VMのターミナルにアクセスすることは別の問題であり、screenコマンドを使用すると実行できます。
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
そのパスはシンボリックリンクであり、私のシステムではを指し/dev/ttys003
ます。
いったん入ると、パスワードがないmoby login
だけroot
であることに注意してください。終了すると、CTRL-A、Dがスクリーンセッションから切断されます。
注:これはDocker for Macのトラブルシューティングに記載されていましたが、削除されたようです。私は幸運にもDockercon 2016の間にそれを見せられました。DockerはエクスペリエンスからVMを完全に抽象化しようとしているようです。
DockerのOSX時間ドリフトの現在のソリューション(2018年4月):
私のMacはNTPサーバーにありますが、この固定クロックはコンテナでドリフトします。
https://docs.docker.com/docker-for-mac/troubleshoot/#known-issuesから:
システムがNTPサーバーにアクセスできない場合、休止状態の後、Docker for Macで表示される時間がホストとかなり同期していない可能性があります。さらに、使用中に時刻がゆっくりとずれることがあります。ハイバネーション後に時刻を手動でリセットするには、次のコマンドを実行します。
docker run --rm --privileged alpine hwclock -s
または、両方の問題を解決するために、ローカルクロックを優先度の低い(ストラタムの高い)フォールバックNTPタイムソースとしてホストに追加できます。これを行うには、ホストの/etc/ntp-restrict.confを編集して以下を追加します。
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
次に、次のコマンドでNTPサービスを再起動します。
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist