상세 컨텐츠

본문 제목

docker - Edit Container Environment Variables

IT-개발

by 로데안 2024. 6. 24. 14:50

본문

생성된 컨테이너 환경변수 변경하기, 컨테이너 시스템 시간대 변경

prologue
(OracleDB로 테스트 중) 이건 시간대가 왜 안 맞는 걸까?
> TZ가 GMT로 되어있나 본데? 쿼리로 변경하면 해당 세션만 적용되는데..
컨테이너 생성 후에 환경 변수를 바꿀 수 없나?

> 이거 지우고 다시 생성해야 되는 거 아니야? 그럼 테스트 데이터는...?

 

컨테이너를 다시 생성해야 하는 줄로만 알았죠..

 

 

Oracle DB를 이용해서 개발환경을 구축해서 쓰고 있었습니다.

반복적으로 fetch 하는 쿼리에서 데이터가 추가되지 않았죠. 이상하다고 생각했어요.

 AND REQUEST_TIME < SYSDATE

 

이 부분이 문제였어요. 입력된 시간은 제대로 입력됐는데 SYSDATE가 GMT로 찍히는 걸 확인해서..

GMT+9로 바꾸려고 했지만 이건 세션만 적용되겠죠(?)

그래서 docker에서 container로 접근해서 시스템 시간을 확인해 보니 GMT로 되어있는 걸 보니 이걸 바꿔주면 오라클의 SYSDATE도 현재시간으로 설정되지 않을까 하는 생각으로 찾았습니다.

 

** 환경변수는 추가할 수는 있지만 이미 생성된 데이터 영역을 변경한다면 문제가 생길 수 있습니다.

    TimeZone 같은 환경변수만 추가/수정하는 걸 권장합니다.

 

 

Windows Docker에서

 

윈도우 용에서는 기본적으로 처음 컨테이너 Run 이후에는 Environment Variables를 수정할 수 없습니다.

Windows Docker의 컨테이너 설정 화면

아래처럼 생성 후 [Inspect] 탭에서 환경변수를 확인만 할 수 있죠..

하지만 아래 부분은 분명 어딘가 Config파일이 저장되어 있을 거라고 생각했습니다.

Container의 Environment Variables는 [Inspect]에서 확인가능

 

Windows에서 Config는 [ \\docker-desktop-data\data\docker\{container-ID}\config.v2.json ]에 위치하고 있었습니다!

파일을 열어보면 [Inspect]에서 봤던 내용이..

이곳에서 Env Array에 TZ=Asia/Seoul을 추가했습니다.

이 부분은 Docker에서 계속 물고 있는 내용인 건지 Docker를 완전히 정지시키고 파일을 수정해야 합니다.

config.v2.json 의 실체?

 

제대로 변경, 작동 확인

 

이후에 Oracle Container의 시간대는 전역으로 변경되었고 Oracle 내에서도 GMT+9로 변경되어 출력됨을 확인했습니다. (위 이미지는 설명을 위해서 ubuntu 기본 이미지로 작업하였습니다)

 

 

Linux Docker에서

 

윈도우 Docker에서와는 다르게 Ubuntu Docker에서는 어떻게 수정해야 할까..

일단 같은 파일명으로 조회해서 찾았습니다.

 

경로는 [ /var/lib/docker/containers/{container-ID}/config.v2.json ]이며

이곳에서도 동일하게 편집한 후 Docker/Container를 시작하면 적용됩니다.

** docker 서비스를 정지시킨 후 편집해야 합니다.

 

 

epilogue

 

도커가 너무 소모적인 시스템이라 생각 한 부분이 컨테이너 생성 후에 이런 변수들을 바꿀 수 없었기 때문이었는데..

바꾸고 나서 사용하는데 거부감이 줄었습니다.

대부분의 리눅스 이미지들에 TZ=Asia/Seoul을 넣으면 시간대가 변경되는 듯하네요.

 

 

 

 

'IT-개발' 카테고리의 다른 글

docker - Docker 설치 (ubuntu)  (1) 2024.06.17
ubuntu - Ubuntu 24.04 server install  (1) 2024.06.14

관련글 더보기