1

我正在像这样运行我的 Docker 容器:

nvidia-docker run --publish 0.0.0.0:8080:8888 -e LD_LIBRARY_PATH=LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tensorrt/lib -it container:latest bash

在我的主机LD_LIBRARY_PATH是:

/usr/local/cuda/lib64:/usr/local/nccl2/lib:/usr/local/cuda/extras/CUPTI/lib64

我需要使用 ENV 迁移到 Dockerfile,如何更改LD_LIBRARY_PATHinto ENV,而不对值进行硬编码?

这会使用 Host 值吗?

ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/tensorrt/lib
4

1 回答 1

2

使用命令的--build-arg选项docker build

将您的 dockerfile 更改为此

FROM same-base-image
ARG LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/tensorrt/lib

--build-arg使用选项构建 docker 映像

docker build --build-arg LD_LIBRARY_PATH=$LD_LIBRARY_PATH -t myimage:v1 .

注意:这里$LD_LIBRARY_PATH指向主机上的环境变量。

现在运行 docker 容器并确认变量设置正确。

$ docker run -itd myimage:v1 sh
$ docker exec -it mycontainer env

希望这可以帮助。

于 2019-08-13T17:30:31.597 回答