programing

Docker 컨테이너가 호스트 컴퓨터와 시간을 자동 동기화합니까?

nasanasas 2020. 8. 20. 18:57
반응형

Docker 컨테이너가 호스트 컴퓨터와 시간을 자동 동기화합니까?


이미 도커 컨테이너의 시간대를 올바르게 변경했습니다. 주기적으로 시간을 동기화하려면 Docker 컨테이너 내부에 NTP 서버를 설치해야합니까? 그렇지 않으면 컨테이너가 호스트 컴퓨터의 시간을 동기화합니까?


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

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

도커 작성 사용법 :

추가 /etc/localtime:/etc/localtime:ro받는 volumes속성.

예제를 보여주기 위해이 링크보십시오 .

참고 URL : https://stackoverflow.com/questions/22800624/will-docker-container-auto-sync-time-with-the-host-machine

반응형