环境变量DEBIAN_FRONTEND
,用以设置安装过程中的用户界面类型,告知操作系统应该从哪儿获得用户输入。如果设置为noninteractive
,你就可以直接运行命令,而无需向用户请求输入(所有操作都是非交互式的)。
这在运行apt-get
命令时格外有用,因为它会不停的提示用户进行到了哪步并且需要不断确认。尤其编写Dockerfile构建镜像时,有时候会遇到需要交互才能完成的命令,而build过程中又不支持交互,这时候就需要设置该变量来以非交互模式使用默认选项以最快速度完成构建。注意,请确保只在RUN
命令中设置该选项,而不是使用ENV
命令进行全局设置。因为ENV命令在整个容器运行过程中都会生效,所以当你通过BASH和容器进行交互时,如果进行了全局设置那就会出问题。
正确的做法:
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python3
错误的做法:
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get install -y python3
示例:
FROM ubuntu:trusty
MAINTAINER mryqu
RUN \
DEBIAN_FRONTEND=noninteractive apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install wget curl && \
DEBIAN_FRONTEND=noninteractive apt-get -y autoremove && \
DEBIAN_FRONTEND=noninteractive apt-get clean
DEBIAN_FRONTEND=noninteractive|text|newt|gtk|corba
默认值为 newt
。对于串口安装,推荐值为text
。
而在自动化安装过程中,使用最频繁的还是noninteractive
Ubuntu操作系统在Debian的基础上,还提供了如下支持:
DEBIAN_FRONTEND=dialog|readline|gnome|kde|editor|web
默认值为dialog
。经典值为readline
。如果安装过程中发现不支持dialog,则采用readline
。
查看操作系统可用的前端类型:
$ ll /usr/share/perl5/Debconf/FrontEnd/
total 68
drwxr-xr-x 3 root root 4096 Jun 19 2017 ./
drwxr-xr-x 8 root root 4096 Jun 19 2017 ../
-rw-r--r-- 1 root root 7389 Nov 10 2015 Dialog.pm
-rw-r--r-- 1 root root 2165 Nov 10 2015 Editor.pm
-rw-r--r-- 1 root root 5250 Nov 10 2015 Gnome.pm
drwxr-xr-x 2 root root 48 Jun 19 2017 Kde/
-rw-r--r-- 1 root root 4409 Nov 10 2015 Kde.pm
-rw-r--r-- 1 root root 734 Nov 10 2015 Noninteractive.pm
-rw-r--r-- 1 root root 6438 Nov 10 2015 Passthrough.pm
-rw-r--r-- 1 root root 3486 Nov 10 2015 Readline.pm
-rw-r--r-- 1 root root 881 Nov 10 2015 ScreenSize.pm
-rw-r--r-- 1 root root 1573 Nov 10 2015 Teletype.pm
-rw-r--r-- 1 root root 155 Nov 10 2015 Text.pm
-rw-r--r-- 1 root root 2665 Nov 10 2015 Web.pm