首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我用ssh连接到我的Docker容器时,路径为什么会有所不同?

当我用ssh连接到我的Docker容器时,路径为什么会有所不同?
EN

Stack Overflow用户
提问于 2021-10-31 16:48:42
回答 1查看 256关注 0票数 1

我构建了一个基于以下Dockerfile的Docker映像:

代码语言:javascript
复制
ARG PYTORCH="1.6.0"
ARG CUDA="10.1"
ARG CUDNN="7"

FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"

# SSH SERVER
RUN apt-get update && apt-get install openssh-server sudo -y
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
RUN echo 'root:root' | chpasswd

WORKDIR /

EXPOSE 22
CMD ["service ssh start"]

我启动码头集装箱

代码语言:javascript
复制
docker run -it -d -p 7220:22 --name ssh-server-test ssh-server-image /bin/bash

如果我用docker exec -it ssh-server-test /bin/bashdocker attach ssh-server-test连接到容器,就会得到预期的PATH

代码语言:javascript
复制
root@9264667daf83:/# echo $PATH
/opt/conda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

但是,如果我启动ssh服务器时

代码语言:javascript
复制
root@9264667daf83:/# service ssh start
 * Starting OpenBSD Secure Shell server sshd                                                                                                                                [ OK ] 
root@9264667daf83:/# 

通过ssh作为根连接到Docker容器,那么PATH就完全不同了!

代码语言:javascript
复制
root@9264667daf83:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

为什么?当我通过ssh连接到容器时,如何获得正确的PATH变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-01 11:25:33

您所要求的环境变量已由docker本身使用ENV子句设置。检查初始Dockerfile的源代码

ENV设置的变量存在于构建阶段,运行,以及在运行容器中执行时。更多的这里

但是,当您将SSH放入容器中时,通常用于获取像~/.bashrc这样的文件的Linux路径是可以工作的。但是这些文件中没有包含conda、nvidia等的PATH

作为解决办法,您可以在构建阶段用相应的/root/.bashrc修补export PATH。例如,您可以向Dockerfile中添加

代码语言:javascript
复制
RUN echo 'export PATH=/opt/conda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:$PATH' >> /root/.bashrc

UPD

如果您想使用与构建阶段完全相同的PATH,则可以使用

代码语言:javascript
复制
RUN echo "export PATH=${PATH}" >> /root/.bashrc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69788652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档