ubuntu - 在docker下安装时可以回答对话问题吗?

标签 ubuntu installation docker apt-get

是否有可能在使用 apt-get 安装某些软件包时以某种方式回答显示为对话框的问题?

例如,我正在尝试设置一个包含 mail-stack-delivery 包的容器:

FROM ubuntu

RUN apt-get install -y mail-stack-delivery

但是,dockerfile 在构建时会产生几十个错误,这些错误如下:

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin: 

据我了解,我只是无法响应对话框,但有什么方法可以传递参数来提前回答每个问题?我知道它只是改变了一些配置,所以我可以事后做,但大概最好让安装脚本来做,这样一切都可以正确设置。

最佳答案

请参阅此处的讨论:https://github.com/docker/docker/issues/4032 .简而言之,不推荐设置 ENV DEBIAN_FRONTEND noninteractive,因为它会保留在最终镜像中,即使在运行 docker run -i -t ... bash 之类的东西时也是如此。因此,建议要么省略 DEBIAN_FRONTEND 并接受警告,要么为每个命令明确指定它,例如运行 DEBIAN_FRONTEND=noninteractive apt-get install -y -q package

幸运的是,新的 ARG 指令设置了仅在构建期间存在的变量,因此现在可以在 DockerFile 中指定更优雅的解决方案,但不会保留在最终图片:ARG DEBIAN_FRONTEND=noninteractive

关于ubuntu - 在docker下安装时可以回答对话问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22466255/

相关文章:

java - 如何在 Ubuntu 下安装 JDK 11?

ubuntu - 无法使用 Python3.8 在 Ubuntu 上安装 dbus-python

docker - 作为Docker镜像运行时Django REST API挂起

docker - Kubernetes:Docker pod 启动失败,除了一个

docker - 为什么 docker-compose up 会删除其他正在运行的容器?

linux - Ubuntu 14.04 CUDA 8.0 未满足的依赖关系

python - 如何卸载 setuptools python

android - 安卓应用卸载后保留文件

c# - 为什么使用命令行构建 VS 安装项目时没有输出?

javascript - 如何在 JavaScript 代码中获取 XULRunner 应用程序的安装路径