도커 ENV 대 RUN 내보내기
예를 들어 이 명령어들을 결합하고 싶다고 치자.
RUN command_1
ENV FOO bar
RUN command_2
안으로
RUN command_1 && export FOO=bar && command_2
그리고 그 변수를 어떻게 설정할지 궁금했어요.RUN export
대ENV
동등했습니다.
다시 말해, 도커 파일에서 이러한 명령 간에 차이가 있습니까?
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
'programing' 카테고리의 다른 글
Oracle에서 윤초를 처리하는 방법 (0) | 2023.09.15 |
---|---|
AFNetworking에 누락된 ASIHTTP 요청 주요 기능은 무엇입니까? (0) | 2023.09.15 |
mariadb 10.5의 출력을 설명하는 행 섹션의 백분율의 의미 (0) | 2023.09.15 |
값에 따라 테이블의 두 열을 "병합"하고 DateTime 유형 열에서 가장 최근 날짜를 선택하는 mysql 테이블 보기 만들기 (0) | 2023.09.15 |
RockyLinux 기반 맞춤형 MariaDB 도커 이미지 (0) | 2023.09.15 |