Docker Container를 SSH로 접속하면 Environment Variable이 다를 때

Jaesun Park·2022년 2월 15일
0

Dockerfile에서 ENV로 등록한 environment variable이 docker 명령어로 접근한 session에서는 잘 보이지만, container 내부에서 ssh-server를 돌리고 이를 ssh로 접근하면 해당 environment가 사라지는 것을 확인할 수 있다.

예를 들어,

FROM ubuntu

ENV HI 10

와 같이 `ubuntu` image에 `HI`라는 environment variable만을 등록하고, 이를 docker로 접근하면 이 environment variable은 잘 보인다.

root@7ff2f35a5fed:/# echo $HI
10

그런데 container 내에 ssh server를 설치하고 외부에서 ssh로 접근하면 environment variable는 사라진다.

root@7ff2f35a5fed:~# echo $HI
 

사실 이는 당연한게, run이든, exec이든 docker로 접근한다면 Dockerfile의 session을 이어받는 것이다.
따라서 environment variable 또한 상속받는다.


그런데 ssh로 새로운 session을 만든다면 .bashrc 등의 shell 설정 파일이 로드되며, 여기에 등록되지 않은 변수들은 보이지 않을 뿐이다.
ssh로 접근할 때에도 이 변수들을 그대로 받으려는 방법들을 찾아봤지만 뚜렷한 답을 찾지는 못했다.
따라서 이 변수들을 활용하고 싶다면 최대한 docker를 경유하여 접근하는 것이 안전하다.

0개의 댓글