본문 바로가기

IT/리눅스

rocky linux docker 시간 설정 변경(timezone, timedatectl)

반응형

일반적으로 ntp등을 이용하여 시간 싱크를 맞출때 rdate 명령어를 주로 사용하는 경우가 많은데

rocky linux에서는  rdate를 제공하지 않는다. 

 

기본적으로 설치된 timezone을 변경하기 위해서는 timedatectl을 사용하게된다. 

 

1. rocky linux timezone 변경 (host)

 

host에서는 직접 변경할 수 있다. 

먼저 현재 설정을 확인하고 set-timezone을 이용하여 설정한다. 

 

[root@localhost ~]# timedatectl
               Local time: 수 2024-04-03 00:33:15 EDT
               Universal time: 수 2024-04-03 04:33:15 UTC
               RTC time: 수 2024-04-03 04:33:15
               Time zone: America/New_York (EDT, -0400)   
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

 

다음과 같이 timezone을 변경한다. 


[root@localhost ~]# timedatectl set-timezone Asia/Seoul
[root@localhost ~]# timedatectl
               Local time: 수 2024-04-03 13:33:59 KST
           Universal time: 수 2024-04-03 04:33:59 UTC
                 RTC time: 수 2024-04-03 04:33:59
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

 

2. docker  내부에서 시간 변경 

rockylinux docker에는 timedatectl을 수행하면 에러가 난다

 

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to create bus connection: Host is down

 

Docker 컨테이너에서 timedatectl 명령어를 사용하려고 할 때 나타나는 에러는 컨테이너가 전체 시스템을 제어하는 systemd를 사용하지 않기 때문이다.

 

Docker에서 시간대를 설정하려면 컨테이너가 호스트의 시간 설정을 상속받는 것이 일반적이지만 컨테이너 내부에서 시간대를 명시적으로 설정하고 싶다면, 시간대 파일을 컨테이너 내부로 복사하는 방법을 사용할 수 있다

 

(1) 컨테이너 생성 시 시간대 변경하기

 

컨테이너를 생성할 때 timezone 파일을 컨테이너의 /etc/localtime으로 마운트하는 방법 으로 

docker run 시 -v /usr/share/zoneinfo/Asia/Seoul:/etc/localtime:ro 를 추가하는 방식이다. 

 

(2) 이미 실행 중인 컨테이너 내부에서 시간대를 변경하기 

 

timezone 파일을 직접 복사하는 방법이다

 

[root@Rocky8Docker logs]#cp -rf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
cp: overwrite '/etc/localtime'? y
[root@Rocky8Docker logs]#date
2024. 04. 03. (수) 13:39:00 KST

 

 

반응형