构建Ubuntu 20.04 Docker容器时区选择卡住问题求助
解决Docker构建Ubuntu 20.04容器时手动选择时区的问题
问题描述
构建基于Ubuntu 20.04的Docker容器时,构建过程中弹出时区选择提示,即使在Dockerfile中设置了非交互模式,仍无法跳过该步骤。
尝试过的配置
ENV TZ=US \ DEBIAN_FRONTEND=noninteractive
构建时输出片段
=> [stage-1 21/28] RUN apt-get update && apt-get install -y nvidia-driver-470 529.9s => => # 1. Africa 6. Asia 11. System V timezones => => # 2. America 7. Atlantic Ocean 12. US => => # 3. Antarctica 8. Europe 13. None of the above => => # 4. Australia 9. Indian Ocean => => # 5. Arctic Ocean 10. Pacific Ocean => => # Geographic area:
涉及的Dockerfile片段
FROM freesurfer/freesurfer:7.1.1 as Stage1 ENV TZ=US \ DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive # Stage 2 FROM deepmi/fastsurfer:gpu-v2.1.1 # Dev install. git for pip editable install. RUN apt-get update && \ apt-get install -y nvidia-driver-440 && \ apt-get install -y wget && \ apt-get install --no-install-recommends -y apt-utils git && \ apt-get -y install curl && \ apt-get install libgomp1 && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
解决方案及原因
1. 修正无效时区值
TZ=US不是IANA时区数据库的有效取值,tzdata包会因此触发交互选择流程。需替换为具体时区,例如America/New_York、Asia/Shanghai等标准时区值。
2. 为Stage2单独设置环境变量
Stage1中配置的环境变量不会自动传递到Stage2,需要在Stage2镜像构建阶段单独设置DEBIAN_FRONTEND=noninteractive和正确的TZ值。
3. 提前配置tzdata避免交互
在安装其他依赖前,先安装并配置tzdata,确保时区设置完成,避免后续安装操作触发交互提示。
修改后的Stage2部分Dockerfile:
FROM deepmi/fastsurfer:gpu-v2.1.1 # 设置有效时区和非交互模式 ENV TZ=America/New_York ENV DEBIAN_FRONTEND=noninteractive # Dev install. git for pip editable install. RUN apt-get update && \ # 预安装并配置tzdata,跳过交互 apt-get install -y --no-install-recommends tzdata && \ ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \ dpkg-reconfigure --frontend noninteractive tzdata && \ # 安装其他依赖包 apt-get install -y nvidia-driver-440 wget curl libgomp1 && \ apt-get install --no-install-recommends -y apt-utils git && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # 可选:重置DEBIAN_FRONTEND,避免影响后续命令的交互性 ENV DEBIAN_FRONTEND=
内容的提问来源于stack exchange,提问作者Ash Mistry
相关产品推荐
相关产品推荐

