클라우드와 컨테이너의 기초
$ docker run -d -e DB_HOST=db.staging.example.com web:1.4.2
$ docker run -d -e DB_HOST=db.prod.example.com web:1.4.2위와 같이 데이터베이스의 접속 대상을 이미지에 써 넣지 않고, 컨테이너를 시작할 때 환경 변수로 전달하도록 했다. 이 설계의 주된 이점으로 가장 적절한 것은?
- A환경 변수에 넣은 값은 자동으로 암호화되므로, 비밀번호를 넣어도 다른 사람에게 읽히는 일이 없다
- B같은 이미지를 다시 만들지 않고 스테이징과 운영에서 설정만 바꾸어 사용할 수 있으므로, 시험한 것을 그대로 운영에 내보낼 수 있다
- C접속 대상의 정보가 이미지의 레이어에 들어가지 않으므로, 이미지의 레이어가 줄어 컨테이너의 시작이 크게 빨라진다
정답과 해설 보기
정답: B. 같은 이미지를 다시 만들지 않고 스테이징과 운영에서 설정만 바꾸어 사용할 수 있으므로, 시험한 것을 그대로 운영에 내보낼 수 있다
설정을 환경 변수로 전달하는 방법은 The Twelve-Factor App이라는 방법론에서도 권장하는 사고방식으로, 코드와 이미지를 그것을 실행하는 환경으로부터 분리할 수 있습니다. 같은 이미지를 스테이징과 운영에서 사용할 수 있으므로 시험한 것과 같은 것을 운영에 내보낼 수 있고, 접속 대상을 바꿀 때마다 이미지를 다시 만들 필요도 없습니다. 다만 환경 변수는 암호화되지 않으므로, 컨테이너의 설정이나 프로세스의 정보를 볼 수 있는 사람에게는 읽힙니다. 비밀번호 같은 기밀 값은 Kubernetes의 Secret 같은 구조로, 읽을 수 있는 사람을 좁혀서 전달합니다.