답변:
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 사용자를위한 업데이트
현재 OSX의 Docker를 시작하고 실행하기위한 권장 메커니즘 인 Kitematic 을 실행하는 경우 다음 명령을 주기적으로 실행해야합니다.
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에서 상당한 드리프트를 경험했습니다. 에서 알파인 리눅스 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는 화면 세션에서 연결을 끊습니다.
참고 : 이것은 Mac 문제 해결 용 Docker에 문서화되어 있었지만 삭제 된 것으로 보입니다. 저는 운이 좋게도 Dockercon 2016에서 그것을 볼 수있었습니다. Docker는 VM을 경험에서 완전히 추상화하려고하는 것 같습니다. 이것이 더 이상 문서화되지 않은 이유를 설명합니다.
Docker의 osx 시간 드리프트에 대한 현재 솔루션 (2018 년 4 월) :
NTP 서버에 Mac이 있지만 컨테이너가있는 고정 클럭 드리프트 :
에서 https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
시스템이 NTP 서버에 액세스 할 수없는 경우 최대 절전 모드 후에 Mac 용 Docker에 표시되는 시간이 호스트와 상당히 동기화되지 않을 수 있습니다. 또한 사용 중에 시간이 천천히 동기화되지 않을 수 있습니다. 최대 절전 모드 후 시간을 수동으로 재설정하려면 다음을 실행하십시오.
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