본문 바로가기
Tools

[Docker] Container 시간 Time Zone 설정

by A6K 2023. 3. 22.

도커로 리눅스 컨테이너를 띄우고 그 안에서 작업을 하는 상황이었다. 이상하게 시간 관련된 작업에서 이상하게 동작하는 것이 발견되었다. 확인 결과 도커 컨테이너에는 시간(Timezone)이 UTC+0 으로 설정되어있었다. 따라서 실행하는 도커 컨테이너의 시간 정보를 한국 시간으로 맞춰줄 필요가 있었다.

TZ 환경변수

가장 기본적으로 도커 컨테이너를 실행할 때, TZ 환경변수에 Asia/Seoul을 설정하면 된다.

docker run -it -e TZ=Asia/Seoul centos /bin/bash

 컨테이너 안쪽에서 date 명령을 실행하면 KST로 설정되어 있는걸 볼 수 있다.

# date
Tue Mar 21 22:54:50 KST 2023

Dockerfile 설정

컨테이너를 띄울 때 말고 이미지 자체에 설정을 하고 싶은 경우 Dockerfile을 수정할 수 있다. Dockerfile에 다음을 추가한다.

ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get install -y tzdata

RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

이미지에 tzdata를 설치한다. 이 때, 원래는 사용자 입력을 받게 되는데 DEBIAN_FRONTEND=noninteractive 설정을 해두면 사용자의 입력을 받지 않고 넘어간다.

그리고 /etc/localtime 을 /usr/share/zoneinfo/Asia/Seoul 로 링크를 걸어두면 된다.

docker-compose.yml 설정

docker-compose.yml 파일을 사용한다면 다음을 추가해주면 된다.

...
services:
  app:
    image: myImage
    environment:
      TZ: "Asia/Seoul"
...

 

environment, TZ 값을 "Asia/Seoul"로 설정해주면 된다.

댓글