【发布时间】:2018-08-03 10:39:37
【问题描述】:
我想将 Dockerfile 中设置的 PATH 和 LD_LIBRARY_PATH 保存到 .bashrc 以供将来使用。
但是,看起来PATH 已正确保存,但LD_LIBRARY_PATH 未正确保存
例如,以下简单的 Dockerfile 将这些变量保存到临时文件中:
FROM nvidia/cuda:9.0-devel-centos7 AS devel
ENV PATH=/opt/pgi/linux86-64/18.4/bin:$PATH
ENV LD_LIBRARY_PATH=/opt/pgi/linux86-64/18.4/lib:$LD_LIBRARY_PATH
RUN touch mylibpath && \
touch mybinpath && \
echo $PATH >> mybinpath && \
echo $LD_LIBRARY_PATH >> mylibpath
结果是PATH 具有正确的值,而LD_LIBRARY_PATH 为空白,如下所示。
但是,如果我将 LD_LIBRARY_PATH 重命名为 ALD_LIBRARY_PATH 之类的名称,它会打印出正确的值。
我错过了什么?
================Before renaming =======================
$ sudo docker build --no-cache -t dshawul/acecast:latest .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM nvidia/cuda:9.0-devel-centos7 AS devel
---> 96c10ed77499
Step 2/4 : ENV PATH /opt/pgi/linux86-64/18.4/bin:$PATH
---> Running in 2e3cf9a3ad64
---> cd56324327ab
Removing intermediate container 2e3cf9a3ad64
Step 3/4 : ENV LD_LIBRARY_PATH /opt/pgi/linux86-64/18.4/lib:$LD_LIBRARY_PATH
---> Running in d228c9421efc
---> 43c2d0043ff5
Removing intermediate container d228c9421efc
Step 4/4 : RUN touch mylibpath && touch mybinpath && echo $PATH >> mybinpath && echo $LD_LIBRARY_PATH >> mylibpath
---> Running in 52ba4a205815
---> e9aede6ab347
Removing intermediate container 52ba4a205815
Successfully built e9aede6ab347
Successfully tagged dshawul/acecast:latest
$ sudo docker run -it dshawul/acecast:latest
[root@efdfdcf693d9 /]# cat mybinpath
/opt/pgi/linux86-64/18.4/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root@efdfdcf693d9 /]# cat mylibpath
[root@efdfdcf693d9 /]# exit
exit
==================After renaming ==============================
$ sudo docker build --no-cache -t dshawul/acecast:latest .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM nvidia/cuda:9.0-devel-centos7 AS devel
---> 96c10ed77499
Step 2/4 : ENV PATH /opt/pgi/linux86-64/18.4/bin:$PATH
---> Running in 3628b77881b4
---> c98fc82bba60
Removing intermediate container 3628b77881b4
Step 3/4 : ENV ALD_LIBRARY_PATH /opt/pgi/linux86-64/18.4/lib:$ALD_LIBRARY_PATH
---> Running in 5eea6a5675c0
---> 7da3fb187682
Removing intermediate container 5eea6a5675c0
Step 4/4 : RUN touch mylibpath && touch mybinpath && echo $PATH >> mybinpath && echo $ALD_LIBRARY_PATH >> mylibpath
---> Running in ebdfdd5e3762
---> c175b1fbd2c1
Removing intermediate container ebdfdd5e3762
Successfully built c175b1fbd2c1
Successfully tagged dshawul/acecast:latest
$ sudo docker run -it dshawul/acecast:latest
[root@9cd1ed4fdf3a /]# cat mybinpath
/opt/pgi/linux86-64/18.4/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root@9cd1ed4fdf3a /]# cat mylibpath
/opt/pgi/linux86-64/18.4/lib:
[root@9cd1ed4fdf3a /]# exit
exit
==========================================================
【问题讨论】:
标签: docker environment-variables dockerfile