2016-10-25 46 views
5

Tôi đã tạo Docker conatainer bằng cách sử dụng hình ảnh ubuntu 16.04.Vùng thời gian Docker trong Ubuntu 16.04 Hình ảnh

Docker chạy -nó -d --name containername -v/var/www/công ubuntu --privileged

sau chứa tạo i kiểm tra ngày ở trong container

#date

Tue 25 tháng 10 08:10:34 UTC 2016

Nhưng, tôi cần phải thiết lập Á/Kolkata vậy, tôi cố gắng thay đổi

/etc/múi giờ

File sau đó dừngbắt đầu container Docker, Nó doesn 't làm việc. Vẫn hiển thị cùng thời gian.

Đề xuất cho tôi Cách thay đổi múi giờ trong vùng chứa docker Sau khi tạo Vùng chứa?

Trả lời

17

Cập nhật /etc/timezone là cách thông thường, nhưng có một bug in Xenial có nghĩa là không hoạt động.

Thay vào đó bạn cần phải tạo ra một liên kết từ múi giờ mong muốn etc/localtime:

FROM ubuntu:xenial  
RUN ln -fs /usr/share/zoneinfo/US/Pacific-New /etc/localtime && dpkg-reconfigure -f noninteractive tzdata 
+0

Thay vì Pacific-New, cái nào là cho Mountain? –

+0

Đường dẫn duy nhất mà vùng chứa của tôi có dưới '/ usr/share/zoneinfo' là'/usr/share/zoneinfo/Etc/UTC', do đó nó không hoạt động; ( –

4

Hãy thử:

echo "Asia/Kolkata" > /etc/timezone 
rm /etc/localtime 
dpkg-reconfigure -f noninteractive tzdata 

Bạn phải làm rm /etc/localtimeUbuntu bug.

4

Trong ubuntu 16.04 tôi đã thiếu tzdata nên tôi phải cài đặt nó. giải pháp làm việc là

ENV TZ 'Europe/Tallinn' 
    RUN echo $TZ > /etc/timezone && \ 
    apt-get update && apt-get install -y tzdata && \ 
    rm /etc/localtime && \ 
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ 
    dpkg-reconfigure -f noninteractive tzdata && \ 
    apt-get clean 
0

SOLVED:

FROM ubuntu:16.04 

RUN apt-get update && \ 
    apt-get install -y software-properties-common apt-utils locales tzdata 

RUN echo "tzdata tzdata/Areas select Europe" > timezone.txt 
RUN echo "tzdata tzdata/Zones/Europe select Rome" >> timezone.txt 
RUN debconf-set-selections timezone.txt 
RUN rm /etc/timezone 
RUN rm /etc/localtime 
RUN dpkg-reconfigure -f noninteractive tzdata 
0

Như said here, bí quyết 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à ưa thích) vào một tập tin trong /usr/share/zoneinfo. Vì vậy, nó có thể làm điều này hoàn toàn từ Dockerfile của bạn. Hãy xem xét:

ENV TZ=America/Los_Angeles 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 

Và như một phần thưởng, TZ cũng sẽ được đặt chính xác trong vùng chứa.

Đây cũng là phân bổ bất khả tri, do đó, nó hoạt động với khá nhiều thứ Linux.

0

Nếu bạn sử dụng docker-compose, chỉ cần thêm một dòng vào tệp docker-compose.yml của bạn.

phiên bản: '3'

services: 
    ubuntu-local: 
    image: ubuntu:16.04 
    restart: on-failure 
    command: python3 run_my_code.py 
    working_dir: /code 
    volumes: 
     - ./code:/code 
     - /etc/localtime:/etc/localtime:ro # <--add this line to set timezone 
    environment: 
     - PYTHONUNBUFFERED=1 
Các vấn đề liên quan