Docbotコンテナーにcertbotをインストールするときのtzdataとのユーザーの対話の回避


108

Ubuntu 16.04イメージのあるドッカー環境にcertbotをインストールしたい:

例えば:

docker run -it ubuntu:16.04 /bin/bash

私がコンテナの中にいるとき、certbotをインストールする最も簡単な方法は、ユーザーの介入が必要なので機能しません。

apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

問題はtzdata、この対話型ダイアログで停止します:

Extracting templates from packages: 100%
Preconfiguring packages ...
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

 1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
 2. America     5. Arctic     8. Europe    11. SystemV
 3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 

奇妙なtzdataことに、PPAを追加する前にインストールすると動作します。

apt-get update && \
apt-get install -y tzdata && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

質問:

  • tzdataPPAを追加する前と後のどちらでインストールするのに違いがあるのですか?
  • certbotをインストールするときに対話型ダイアログを回避するためのより良いアプローチはありますか?

残念ながら、私のために働いていません。
ニコ・シュレーマー

回答:


100

実行するにはdpkg、インタラクティブな対話なし(アプトのような他のツールの後ろに)、あなたはように、1つの環境変数を設定することができます

DEBIAN_FRONTEND=noninteractive

たとえば、ARGを使用してDockerfileで設定できます。

ARG DEBIAN_FRONTEND=noninteractive

4
注:sudoほとんどの場合、環境変数は渡されないため、sudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata機能しますが、DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata機能しません。
ブレンダン

30
ドッカーファイルの場合、これを追加します。ENV DEBIAN_FRONTEND = noninteractive
ジャージーBean

1
Ubuntu 18.04でこれが機能しない場合がありました。しかし、以下の回答はUbuntu 18.04で修正しました。
tmanthey

askubuntu.com/a/1098881/112499を確認すると、このように非表示にするのではなく、実際に問題が修正されるためです。

29

Ubuntu 18.04では、Dockerfileを実行しました。

ENV TZ=Europe/Minsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt instal....

私がUS / Denverを試したとき、私にとって違いはないようでした。tz情報が間違っているのかもしれません。
言葉


13

TL&DR: DockerFile内

ENV DEBIAN_FRONTEND=noninteractive 

理由:

特定のインストーラーは、優れたフロントエンドを持つことで「インストール」を容易にします。これは手動インストールの場合は素晴らしいことですが、自動インストール中に問題になります。

環境文字列に以下を配置することにより、対話型インストールを上書きできます。

乾杯



同意した; 変更を加える。提案へ
FlyingV

4

DEBIAN_FRONTEND=noninteractiveコマンドの前に設定して、ENV DEBIAN_FRONTEND=noninteractive後のコマンドまたは子イメージに影響を与えないようにすることができます。

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.