Docker의 컨테이너에 환경 변수 전달

Isaac Tony 2023년1월30일
  1. -e-env 태그를 사용하여 Docker의 컨테이너에 환경 변수 전달
  2. 내보내기 명령을 사용하여 Docker의 컨테이너에 환경 변수 전달
  3. -env 파일을 사용하여 Docker의 컨테이너에 환경 변수 전달
Docker의 컨테이너에 환경 변수 전달

이 자습서에서는 Docker의 컨테이너에 환경 변수를 전달하는 방법을 소개합니다.

-e-env 태그를 사용하여 Docker의 컨테이너에 환경 변수 전달

환경 변수를 생성하고 컨테이너에 전달하는 방법을 살펴보는 것으로 시작하겠습니다. 아래 명령을 사용하여 Docker 레지스트리에서 사용할 이미지를 가져와 시작하겠습니다.

$ docker pull ubuntu~$ docker pull ubuntu

출력:

Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

터미널에서 docker run -help 명령을 실행하여 사용법을 확인할 수 있는 -env의 축약형 -e 태그를 사용할 것입니다. 이 인수를 사용하면 컨테이너에 전달할 환경 변수의 여러 키-값 쌍을 만들 수 있습니다.

다음은 단일 환경 변수를 생성하고 Ubuntu 이미지를 사용하여 생성한 컨테이너에 전달하는 방법입니다.

$ docker run -it -e DEMO=sample_variable ubuntu bash

출력:

root@3a20bc21d3c8:/# echo $DEMO
sample_variable

또한 -의 여러 태그를 사용하여 아래와 같이 새 컨테이너를 생성하는 동안 실행 명령과 함께 간단히 연결하여 환경 변수를 생성할 수 있습니다.

$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash

이 두 가지 환경 변수를 전달하면 아래 명령을 사용하여 해당 값에 액세스할 수 있습니다. 변수 1의 이름을 DEMO1로 지정했으며 아래에서 해당 값에 액세스할 수 있습니다.

root@9eee00d7ab01:/# echo $DEMO1

출력:

sample_variable1

마찬가지로 여기에 표시된 것처럼 변수 2를 인쇄할 수도 있습니다.

root@9eee00d7ab01:/# echo $DEMO2

출력:

sample_variable2

내보내기 명령을 사용하여 Docker의 컨테이너에 환경 변수 전달

또는 export 명령을 사용하여 환경 변수에서 함께 연결되는 것을 피할 수도 있습니다. 이 명령은 WSL과 함께 사용할 수 있는 Linux bash 셸용 기본 제공 유틸리티 도구입니다.

기존 변수에 영향을 주지 않고 환경 변수를 생성하고 자식 프로세스에 전달할 수 있습니다. 아래와 같이 환경 변수를 생성하는 것으로 시작하겠습니다.

isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword

환경 변수를 생성했으면 아래와 같이 생성 중인 컨테이너에 전달할 수 있습니다.

$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash

그런 다음 아래와 같이 echo 명령을 사용하여 변수의 각 값에 액세스하고 표시할 수 있습니다.

root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi

-env 파일을 사용하여 Docker의 컨테이너에 환경 변수 전달

디버그 공간을 더 많이 제공하는 더 나은 접근 방식은 대신 Docker 분해 파일을 사용하는 것입니다. 즉, 이제 도커 컨테이너를 시작할 때 환경 변수를 직접 전달할 필요가 없습니다.

이 방법은 환경 변수를 포함할 외부 .env 파일을 만들어야 함을 의미합니다. 아래 Linux 명령을 사용하여 홈 디렉토리에 이 파일을 만들 수 있습니다.

이 명령은 Linux vi 편집기를 선택하여 환경 변수 목록을 생성합니다.

$ vi env.list

vi 편집기 내에서 환경 변수를 키는 대문자로, 각각의 값은 소문자로 된 키-값 쌍으로 생성합니다. 전체 콜론을 누르고 wq 명령을 입력하여 변수를 저장하고 종료합니다.

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

wq

ls 명령을 사용하여 env.list 파일이 성공적으로 저장되었는지 확인할 수 있습니다. 그러면 나열된 파일 중 env.list가 포함된 해당 디렉토리의 파일 목록이 반환되어야 합니다.

아래와 같이 cat 명령을 사용하여 해당 목록의 항목을 볼 수도 있습니다.

$ cat env.list

출력:

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

일단 위치가 지정되면 이제 우분투 이미지를 실행하여 새 컨테이너를 만들고 전달할 변수를 저장한 경로를 지정할 수 있습니다.

env.list 파일은 이 예에서 홈 디렉토리에 저장됩니다. 따라서 다른 디렉토리 안에 있으면 경로가 다르게 보일 수 있습니다.

이러한 환경 변수를 새 컨테이너에 전달하려면 명령을 실행해야 합니다.

$ docker run -it --env-file ./env.list ubuntu bash

아래와 같이 변수를 인쇄하여 컨테이너에 환경 변수를 성공적으로 전달했는지 확인할 수 있습니다.

/# echo $MYSQL_USER
/# echo $MYSQL_PASS

출력:

Isaactonyloi
fakepassword

이전 방법 대신 전달하려는 모든 환경 변수가 포함된 템플릿 파일을 만들 수 있습니다. 이를 통해 변경하려는 경우 이 파일에서 생성된 환경 변수를 쉽게 재정의할 수 있습니다.

작가: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

관련 문장 - Docker Environment Variable