도커 컨테이너에 certbot을 설치할 때 tzdata와의 사용자 상호 작용 방지


107

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을 설치할 때 대화식 대화 상자를 피하는 더 좋은 방법이 있습니까?

불행히도 나를 위해 일하지 않습니다.
Nico Schlömer

답변:


100

dpkg대화식 대화없이 (Apt와 같은 다른 도구 뒤에서) 실행하려면 하나의 환경 변수를 다음과 같이 설정할 수 있습니다

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하지 않습니다.
Brendan Long

29
dockerfiles,이 추가 : ENV DEBIAN_FRONTEND = 비대화
저지 빈

1
우분투 18.04에서 작동하지 않는 경우가 있습니다. 그러나 아래 답변은 우분투 18.04에서 수정되었습니다.
tmanthey

28

우분투 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.