イメージ定義で設定した環境変数が設定されていないコンテナを作成している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
ありがとう@チェック者。私はそれを編集した。私の最も重要な部分は、PATHとLD_LIBRARY_PATH環境変数を適切に設定することです。他のものは、コンテナに入るときにユーザが見るディスプレイに関するちょうど審美的なものです。私は参照してください – wandadars