Docker가 이미지 정의에서 설정 한 환경 변수가 설정되지 않은 컨테이너를 만드는 데 문제가 있습니다.Docker에서 환경 변수 설정
나는 OpenSuse 42.3의 이미지를 생성하는 Dockerfile을 만들었습니다. 이미지에서 컨테이너를 시작한 사람이 내가 컴파일하고 이미지에 배치 한 코드를 사용할 수 있도록 이미지에 환경 변수를 설정해야합니다.
필자는 필요한 환경 변수 정의가 포함 된 "image_env_setup.sh"라는 쉘 파일을 만들었습니다. 또한 Dockerfile에 수동으로 환경 변수 정의를 추가했습니다.
USER codeUser
COPY ./docker/image_env_setup.sh /opt/MyCode
ENV PATH="$PATH":"/opt/MyCode/bin:/usr/lib64/mpi/gcc/openmpi/bin"
ENV LD_LIBRARY_PATH="/usr/lib64:/opt/MyCode/lib:"
ENV PS1="[\[email protected]: \w]\$ "
ENV TERM="xterm-256color"
ENV GREP_OPTIONS="--color=auto"
ENV EDITOR=/usr/bin/vim
USER root
RUN chmod +x /opt/MyCode/image_env_setup.sh
USER codeUser
RUN /opt/MyCode/image_env_setup.sh
RUN /bin/bash -c "source /opt/MyCode/image_env_setup.sh"
내가 용기를 만드는 데 사용하는 명령은 다음과 같습니다
는docker run -it -d --name ${containerName} -u $userID:$groupID \
-e USER=$USER --workdir="/home/codeUser" \
--volume="${home}:/home/codeUser" ${imageName} /bin/bash \
작동하는 유일한 것은 용기가 시작될 때 다시 실행되는 쉘 파일을 전달하는 것입니다.
docker start $MyImageTag
docker exec -it $MyImageTag /bin/bash --rcfile /opt/MyCode/image_env_setup.sh
나는 그것이있을 거라고 생각하지 않았다 어려워으로 어떤 항목이 그들과 함께 사용자가 이미 정의를 제공 할 수 있도록 컨테이너 내의 쉘 변수 설정을 단지를합니다.
이'alias' 쉘 명령입니다한다; 'ENV'가 수정하는 환경과 아무 관련이 없습니다. – chepner
감사합니다. @chepner. 나는 그것을 편집했다. 나를 위해 가장 중요한 부분은 PATH와 LD_LIBRARY_PATH 환경 변수를 적절하게 설정하는 것입니다. 다른 것들은 컨테이너에 입장 할 때 사용자가 보는 디스플레이에 관한 미학적 인 것들입니다. – wandadars