conda在docker中不能正常初始化以及找不到的问题及解决

ubuntu : 18.04
conda、docker版本不重要

问题描述

在使用dockerfile 来build docker镜像的过程中,经常报错找不到conda。哪怕source 用户的.bashrc也不行。这次想探究一下为什么在docker build阶段会找不到已经安装好并且conda init过的conda。

探索

https://askubuntu.com/questions/64387/cannot-successfully-source-bashrc-from-a-shell-script
https://unix.stackexchange.com/questions/257571/why-does-bashrc-check-whether-the-current-shell-is-interactive
在探索的过程中,我收集到了几点关键性信息:

  1. conda init其实就是在用户的bashrc文件中加入一组代码,其目的是使用户在登陆就能在环境变量中加入conda的路径,使其能调用conda命令,
  2. .bashrc 文件中写明了,在非交互式模式下不会执行。
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
  1. docker build的过程中其实是非交互模式

解决

以上几点说明了关键性问题就在 .bashrc 在非交互模式下不能执行。所以要么将其设置成交互模式,要么将conda init后加入.bashrc的内容手动执行一下。具体实现有几种方式:

  1. bash -ic ‘source .bashrc’
  2. #!/bin/bash -i 加入到shell脚本首行
  3. eval “$(cat ~/.bashrc | tail -n +10)”
  4. source conda安装路径/etc/profile.d/conda.sh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值