programing

도커 ENV 대 RUN 내보내기

minimums 2023. 9. 15. 20:52
반응형

도커 ENV 대 RUN 내보내기

예를 들어 이 명령어들을 결합하고 싶다고 치자.

RUN command_1
ENV FOO bar
RUN command_2

안으로

RUN command_1 && export FOO=bar && command_2

그리고 그 변수를 어떻게 설정할지 궁금했어요.RUN exportENV동등했습니다.

다시 말해, 도커 파일에서 이러한 명령 간에 차이가 있습니까?

ENV FOO bar

RUN export FOO=bar

684호에서 설명한 바와 같이,export이미지 간에 지속되지 않습니다. (각 도커 파일 지시문은 중간 이미지에 커밋되는 중간 컨테이너를 생성합니다. 해당 이미지는 내보낸 값을 유지하지 못합니다.)
ENV will:

를 사용하여 환경변수를 설정합니다.ENV결과 이미지에서 컨테이너가 실행될 때 지속됩니다.
다음을 사용하여 값을 볼 수 있습니다.docker inspect, 를 사용하여 변경합니다.docker run --env <key>=<value>.

이 문제는 다음과 같이 설명되고 있었습니다.

RUN export PATH=$PATH:/foo/bar # from directly in builder

내가 할때는docker run [img] bash -c 'echo $PATH'포함하지 않습니다./foo/bar.

먹어봐.

다음을 포함하는 새 도커 파일을 만듭니다.

FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"

그럼 지어봐요.마지막 단계의 출력은 다음과 같습니다.

Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
 ---> Running in eb66196b238d
foofoo  bazbaz

다음을 확인할 수 있습니다.

  • FOO덕분에 중간 컨테이너를 통해 지속됩니다.ENV키워드;

  • BAR다음 단계에서 지속되지 않습니다. 왜냐하면,export명령;

  • BAZ변수가 동일한 컨테이너의 동일한 도커 이미지 레이어에서 사용되므로 올바르게 표시됩니다.

    도커 파일의 각 명령어는 이미지에 레이어를 만듭니다.

    원천

이것이 도움이 될 수 있다고 생각합니다.

RUN echo "export FOO=bar" >> /etc/bash.bashrc

언급URL : https://stackoverflow.com/questions/33379393/docker-env-vs-run-export

반응형