كيفية ضبط وقت النظام ديناميكيا في حاوية عامل الميناء

هل هناك أي طريقة لتعيين وقت نظام حاويات عامل الميناء ديناميكيا (في وقت التشغيل) دون التأثير على الجهاز المضيف?

باستخدام

hwclock --set --date "Sat Aug 17 08:31:24 PDT 2016"

يعطي الخطأ التالي:

hwclock: Cannot access the Hardware Clock via any known method.hwclock: Use the --debug option to see the details of our search for an access method.

باستخدام

date -s "2 OCT 2006 18:00:00"

يعطي الخطأ التالي:

date: cannot set date: Operation not permitted

حالة الاستخدام:

أحتاج إلى اختبار برنامج حساس للوقت (يعتمد السلوك على التاريخ).

حالات الاستخدام الشائعة الأخرى:

  • تشغيل البرامج القديمة مع أخطاء واي 2 كي
  • اختبار البرمجيات للامتثال العام 2038
  • تصحيح المشكلات المتعلقة بالوقت ، مثل شهادات طبقة المقابس الآمنة منتهية الصلاحية
  • تشغيل البرنامج الذي يتوقف عن العمل خارج إطار زمني معين
  • عمليات البناء الحتمية.

فمن الممكن

الحل هو تزييفها في الحاوية. هذا ليب اعتراض جميع برامج استدعاء النظام تستخدم لاسترداد الوقت والتاريخ الحاليين.

التنفيذ سهل. إضافة وظائف إلى دوكيرفيل الخاص بك حسب الاقتضاء:

WORKDIR /RUN git clone https://github.com/wolfcw/libfaketime.gitWORKDIR /libfaketime/srcRUN make install

تذكر تعيين متغيرات البيئة LD_PRELOAD قبل تشغيل التطبيق الذي تريد الوقت مزورة تطبيقها على.

مثال:

CMD ["/bin/sh", "-c", "LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME_NO_CACHE=1 python /srv/intercept/manage.py runserver 0.0.0.0:3000]

يمكنك الآن تغيير وقت الخوادم ديناميكيا:

مثال:

import osdef set_time(request):    print(datetime.today())    os.environ["FAKETIME"] = "2020-01-01"  # Note: time of type string must be in the format "YYYY-MM-DD hh:mm:ss" or "+15d"    print(datetime.today())

هنا docker-compose الحل:

أضف /etc/localtime:/etc/localtime:ro إلى volumes السمة.

تحقق من هذا الرابط للحصول على مثال.

ابدأ الحاوية بمتغير بيئة إضافي:

docker run -e "SET_CONTAINER_TIMEZONE=true" \           -e "CONTAINER_TIMEZONE=US/Arizona" [docker image name]

في الواقع ، أنا فقط وجدت واختبارها بشكل إيجابي حل باستخدام ليبفاكتيمي

سوف أقوم بتحديث مع إجابة + مثال العمل قريبا.

ماذا سيكون الغرض من القيام بذلك? ما هي حالة استخدامك?

يرجى الاطلاع على تحرير.