如果需要交互式安装,如何在 docker 中安装 modules/stuff?
How does one install modules/stuff in docker if it requires interactive install?
这个问题困扰我很久了。每当我在构建期间尝试在 docker 上安装任何需要交互式安装的东西时,构建“挂起”在交互屏幕上。例如,对于一个 particular 项目,我需要在 docker 中安装 sddm
(是的,是的,我知道我很愚蠢)。现在,构建只是挂在我应该 select 我的键盘布局的步骤。我该如何解决这些问题?
PS:并非所有安装脚本都是shell可以修改的脚本(如apt install sddm -y
)。
PS:spawn
和 echo
并不总是有用。
因为我在发布第一个答案时并没有完全理解这个问题。这是另一种可能的解决方案:
- 运行 基础容器
- 使用 bash
docker exec -it mycontainer bash
执行到容器中
- 以交互方式安装所需的软件
- 使用
docker commit mycontainer mytag
从 运行ning 容器创建图像
其实答案很简单。 ENV 变量设置正确
ENV DEBIAN_FRONTEND=noninteractive
这个问题困扰我很久了。每当我在构建期间尝试在 docker 上安装任何需要交互式安装的东西时,构建“挂起”在交互屏幕上。例如,对于一个 particular 项目,我需要在 docker 中安装 sddm
(是的,是的,我知道我很愚蠢)。现在,构建只是挂在我应该 select 我的键盘布局的步骤。我该如何解决这些问题?
PS:并非所有安装脚本都是shell可以修改的脚本(如apt install sddm -y
)。
PS:spawn
和 echo
并不总是有用。
因为我在发布第一个答案时并没有完全理解这个问题。这是另一种可能的解决方案:
- 运行 基础容器
- 使用 bash
docker exec -it mycontainer bash
执行到容器中
- 以交互方式安装所需的软件
- 使用
docker commit mycontainer mytag
从 运行ning 容器创建图像
其实答案很简单。 ENV 变量设置正确
ENV DEBIAN_FRONTEND=noninteractive