apt-get install在Ubuntu 16.04 docker image:'/ etc / resolv.conf':设备或资源忙

时间:2016-11-29 23:24:49

标签: docker dockerfile ubuntu-16.04

我从一个相当普通的Ubuntu 16.04映像中运行apt-get install时收到以下错误消息:

ln: cannot remove '/etc/resolv.conf': Device or resource busy
dpkg: error processing package resolvconf (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 resolvconf

但是,似乎正确安装了软件包。如何解决?

我的Dockerfile如下所示:

FROM ubuntu:16.04
MAINTAINER Me Myself <me@myself.com>
RUN apt-get update && apt-get install -y git nano 
RUN apt-get upgrade -y

# set the timezone. Note: there is an Ubuntu 16.04 bug which
# requires this to be done this way: 
# http://stackoverflow.com/questions/40234847/docker-timezone-in-ubuntu-16-04-image/40235306#40235306
RUN ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

RUN locale-gen en_US en_US.UTF-8 de_DE.UTF-8
ENV PATH="/opt/xyz/bin:${PATH}"

2 个答案:

答案 0 :(得分:1)

https://github.com/moby/moby/issues/1297中所述,您可以将RUN echo "resolvconf resolvconf/linkify-resolvconf boolean false" | debconf-set-selections添加到Dockerfile中。这样就可以在容器中安装resolvconf

答案 1 :(得分:1)

使用@Christian Berendt的上述评论和答案,我仍然遇到这些错误:

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: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin: 

这是我完整的解决方案,方法是将以下几行添加到Dockerfile中:

这些行有助于安装带有redebconf错误的resolvconf

RUN apt-get update    
RUN apt-get install -y apt-utils debconf-utils dialog
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN echo "resolvconf resolvconf/linkify-resolvconf boolean false" | debconf-set-selections
RUN apt-get update
RUN apt-get install -y resolvconf