Dev/Docker

[Docker] Docker 컨테이너 기본 시간대 설정

kimyoungrok 2024. 11. 11. 14:42

기본적으로 Docker 컨테이너는 호스트 시스템의 시간대와 무관하게 UTC 표준 시간대로 설정되어 있습니다. 이 점은 특히 한국과 같이 UTC+9 시간대를 사용하는 환경에서 중요한 고려 사항이 될 수 있습니다.

호스트(EC2)의 시간대를 설정하는 방법은 지난 글에서 다룬적 있습니다.

 

[EC2] AWS EC2 인스턴스에서 시간대(Timezone) 설정 변경하기

AWS EC2 인스턴스를 활용할 때 기본적으로 시간대(Timezone)가 UTC(세계 협정시)로 설정되어 있습니다.UTC는 글로벌 시간 표준으로 편리하지만, 한국 시간과 같은 로컬 시간대가 필요한 경우에는 시간

kyr-db.tistory.com

하지만, Docker 컨테이너는 여전히 UTC 표준시간대를 사용합니다.

 

이를 해결할 수 있는 방법을 스프링 서버의 시간대가 호스트 시간대에 의존하지 않도록 설정하는 방법에 대해서도 다룬적 있습니다.

 

[Spring] 스프링 @Schedule 시간대 문제 해결

서버 환경에 따라 스프링 스케줄러가 설정된 시간에 동작하지 않는 경우가 발생할 수 있습니다. 특히, 애플리케이션의 시간대 설정과 배포 서버의 시간대가 일치하지 않을 때, 스케줄러가 의도

kyr-db.tistory.com

하지만 서비스 지역을 고려했을 때, 오픈소스에는 적절한 방법이 아닐 수 있습니다.

이번에는 애플리케이션의 시간대 설정은 기본값을 유지하면서도 시간대를 변경하는 방법에 대해 소개하겠습니다.

 

Docker 컨테이너의 시간대 설정

컨테이너가 한국 시간을 기준으로 정확하게 동작하게 하려면, Docker 컨테이너 생성 시 환경 변수와 심볼릭 링크를 통해 시간대를 지정할 수 있습니다.

 

TZ 환경 변수를 사용해 컨테이너의 시간대를 Asia/Seoul로 설정할 수 있습니다.

docker run --name <컨테이너_이름> \
  -e TZ=Asia/Seoul \
  -d <이미지_이름>

 

생성된 컨테이너의 시간대 확인을 다음의 명령어를 통해 쉽게 확인할 수 있습니다.

docker exec -it <컨테이너 이름> date

 

로컬의 우측 하단 시간대와 EC2의 시간대가 동일한 것을 확인할 수 있습니다.

 

 

결론

이러한 설정을 통해 컨테이너가 한국 시간대를 기반으로 애플리케이션을 실행할 수 있도록 하면, 스케줄링 작업이 정확한 시간에 수행되도록 보장할 수 있습니다.

Docker 컨테이너의 기본 시간대를 적절히 설정하면, 호스트의 시간대와 일치하지 않아 발생하는 문제를 예방하고 애플리케이션이 예상대로 작동할 수 있도록 할 수 있습니다. 시간대 설정이 필요한 애플리케이션을 도커로 실행할 때, 이러한 설정을 항상 고려하는 것이 좋습니다.