Jawaban:
Jika Anda menggunakan OSX menjalankan boot2docker, lihat masalah ini: https://github.com/boot2docker/boot2docker/issues/290
Sinkronisasi waktu menjadi masalah karena host boot2docker memiliki time drift-nya saat OS Anda tertidur. Sinkronisasi waktu dengan penampung buruh pelabuhan Anda tidak dapat diselesaikan dengan menjalankan penampung Anda dengan-v /etc/localtime:/etc/localtime:ro
Sebagai gantinya, untuk saat ini, Anda harus menjalankan ini secara berkala di OSX:
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Pembaruan untuk pengguna Kitematic
Jika Anda menjalankan Kitematic , yang sekarang merupakan mekanisme yang disarankan untuk bangun dan berjalan di Docker di OSX, Anda harus menjalankan perintah ini secara berkala:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
Atau, untuk buruh pelabuhan versi lama
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
Pembaruan untuk pengguna Docker asli baru untuk OSX
Docker Beta baru menghilangkan VirtualBox dan Mesin Docker. Build terbaru dari buruh pelabuhan (saat ini, 1.12.1-beta25 (build: 11807)) tampaknya memiliki kemampuan untuk mendeteksi ketika ada penghentian waktu dan menyesuaikannya. Jadi, ini seharusnya tidak lagi menjadi masalah ... hore !!
https://github.com/sameersbn/docker-gitlab/issues/77
Lihat jawaban sameersbn.
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
Solusi paling sederhana tampaknya menjalankan penampung Anda dengan -v /etc/localtime:/etc/localtime:ro
opsi. Jadi:
#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
mode).
date
pada mesin host di MWE saya, karena jika tidak, mungkin tidak jelas apakah container mendapatkan waktunya dari host.
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
Di Docker untuk Mac OS X Beta, saya mengalami pergeseran yang signifikan pada VM, yang didasarkan pada Alpine Linux. Dari Alpine Linux FAQ Anda dapat menyinkronkan jam VM dengan perintah berikut.
ntpd -d -q -n -p pool.ntp.org
Namun, mendapatkan akses ke terminal di VM adalah pertanyaan lain, yang dapat dilakukan jika Anda menggunakan perintah layar.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Path itu adalah symlink, yang di tunjuk oleh sistem saya /dev/ttys003
.
Setelah Anda masuk, perhatikan bahwa moby login
is hanya root
tanpa kata sandi. Setelah Anda selesai, CTRL-A, D akan memutuskan sambungan dari sesi layar.
CATATAN: Ini dulu didokumentasikan di Docker untuk Mac Trouble Shooting tetapi tampaknya telah dihapus. Saya cukup beruntung untuk ditampilkan saat berada di Dockercon 2016. Tampaknya Docker sedang mencoba mengabstraksi VM sepenuhnya dari pengalaman, yang menjelaskan mengapa tidak lagi didokumentasikan.
Solusi saat ini untuk osx time drift on docker (April 2018):
Saya memiliki mac saya di server NTP, tetapi jam tetap ini melayang dengan kontainer:
Dari https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
Jika sistem Anda tidak memiliki akses ke server NTP, maka setelah hibernasi, waktu yang dilihat oleh Docker untuk Mac mungkin tidak sinkron dengan host. Selain itu, waktu mungkin perlahan-lahan tidak sinkron selama digunakan. Untuk mengatur ulang waktu secara manual setelah hibernasi, jalankan:
docker run --rm --privileged alpine hwclock -s
Atau, untuk mengatasi kedua masalah tersebut, Anda dapat menambahkan jam lokal sebagai sumber waktu NTP fallback prioritas rendah (stratum tinggi) untuk host. Untuk melakukan ini, edit /etc/ntp-restrict.conf host untuk menambahkan:
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
Kemudian restart layanan NTP dengan:
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
Tambahkan /etc/localtime:/etc/localtime:ro
ke volumes
atribut.
Lihat tautan ini untuk menunjukkan contoh.