Nơi nào Docker đựng của họ nhận được thông tin thời gian? Tôi đã tạo ra một số hộp đựng từ ubuntu cơ bản:đáng tin cậy ảnh, và khi tôi chạy, nó và yêu cầu 'ngày, tôi nhận GIỜ thời gian.
Cho một thời gian tôi đã xung quanh điều này bằng cách làm những điều sau tôi Dockerfile:
RUN sudo echo "America/Los_Angeles" > /etc/timezone
Tuy nhiên, đối với một số lý do mà dừng lại làm việc. Tìm kiếm trực tuyến tôi thấy dưới đây, đề nghị:
docker run -v /etc/timezone:/etc/timezone [image-name]
Cả những phương pháp này một cách chính xác thiết lập múi giờ mặc dù!
$ cat /etc/timezoneAmerica/Los_Angeles$ dateTue Apr 14 23:46:51 UTC 2015
Bí mật ở đây là dpkg-reconfigure tzdata chỉ đơn giản là tạo ra /etc/localtime như một bản sao, hardlink hoặc liên kết tượng trưng (một liên kết tượng trưng là ưu tiên) đến một file trong /usr/share/zoneinfo. Vì vậy, nó có thể làm điều này hoàn toàn từ Dockerfile. Xem xét:
đó là không chính xác bởi vì nó không làm việc khi phần mềm yêu cầu thay vì các tập tin /etc/timezone được thiết lập. Bằng cách đó, cậu đang sử dụng lá nó như là việc định giá trị etc/UTC.
Tôi đã xác định rằng thực sự, đó là không hoàn hảo cách thanh lịch để thiết lập vùng thời gian bên trong một container docker. Vì vậy, cuối cùng đã giải quyết trên giải pháp này:
# Set timezone as specified in /config/etc/timezonedpkg-reconfigure -f noninteractive tzdata
Khối lượng dữ liệu /config dockerfile, địa phương, đến một quốc gia cụ thể hoặc khu vực:
# Set the time zoneRUN echo "Europe/London" > /config/etc/timezone
... nó không phải là không thanh lịch, bởi vì liên quan đến 3 tập tin riêng biệt, và lại tạo ra /etc/localtime trên mỗi chạy container bắt đầu. Đó là khá lãng phí.
Tuy nhiên, nó không làm việc đúng, và đạt được thành công tách biệt giữa các cơ sở ứng dụng hình ảnh, và mỗi người mỗi nước địa hình. Trong 3 dòng mã.
Nhờ VonC cho các thông tin liên kết đến các vấn đề. Này, có vẻ như một phức tạp mớ hỗn độn, vì vậy, tôi đã làm một số thử nghiệm trên của riêng tôi tưởng làm thế nào để giải quyết việc này và nó dường như làm việc tuyệt vời.
>docker run -it ubuntu:trusty /bin/bash#dpkg-reconfigure tzdata
(làm theo hướng dẫn để chọn của tôi múi giờ)
>docker commit [container-id] chocko/ubuntu:local
Sau đó tôi cập nhật của tôi Dockerfiles để phản ánh này:
FROM chocko/ubuntu:local
Phải có cái gì đó sai trái với điều này vì nó có vẻ quá dễ dàng để bỏ qua... Hoặc là điều này có thể chấp nhận được?