如何在Dockerfile中跳过Anaconda安装的许可确认与交互步骤?
解决Docker中安装Anaconda的交互确认问题
我来帮你搞定这个Docker构建时卡在交互步骤的问题~在Docker里跑安装脚本时,手动输入确认肯定行不通,这里有两种靠谱的方法跳过所有交互:
方法1:用安装脚本的非交互参数(推荐)
Anaconda的.sh安装包自带了batch模式的参数,直接加-b就能自动接受许可协议、用默认路径完成安装,完全不需要手动输入。修改你的RUN命令就行:
RUN bash Anaconda3-4.4.0-Linux-x86_64.sh -b
要是你想自定义安装路径,再加个-p指定路径就行,比如:
RUN bash Anaconda3-4.4.0-Linux-x86_64.sh -b -p /root/my_anaconda
方法2:管道自动输入确认信息
如果遇到旧版本安装脚本不支持-b参数的情况,我们可以用echo模拟手动输入的内容,通过管道传给脚本:
RUN echo -e "\nyes\n" | bash Anaconda3-4.4.0-Linux-x86_64.sh
这里\n模拟按回车,yes是确认安装的输入,不过这种方法不如第一种稳定,毕竟不同版本的安装脚本可能要求的输入顺序不一样。
给你的Dockerfile做个小优化
把第一种方法整合到你的代码里,顺便给apt-get和conda upgrade也加上非交互参数,避免其他地方卡壳:
FROM ubuntu:16.04 #ubuntu:lastest RUN apt-get update -y # 加-y跳过apt的交互确认 COPY Anaconda3-4.4.0-Linux-x86_64.sh /root/ WORKDIR /root/ RUN bash Anaconda3-4.4.0-Linux-x86_64.sh -b RUN conda upgrade --all -y # 加-y自动确认conda升级
内容的提问来源于stack exchange,提问作者romlym
相关产品推荐
相关产品推荐

