今天,当我登录到我的 Ubuntu 18.04 docker 容器时,我注意到一条新消息。
通过删除用户未登录的系统上不需要的软件包和内容,该系统已被最小化。
要恢复此内容,您可以运行“取消最小化”命令。
然而,这是我时不时登录的一个容器。
我认为,以这种方式在未经用户同意的情况下更改系统并不是一个非常合理的策略,但暂且不论这一点,我如何才能防止 Ubuntu 最小化我的系统呢?
最小化破坏了我的容器的功能并且unminimize
命令以内核错误结束。
答案1
回答,因为我没有声誉来评论。
虽然从技术上来说你不能防止基于 Docker 的 Ubuntu 安装被最小化(因为 Docker 镜像在你拉取时就是这样的),你绝对可以撤消它:添加一个调用
yes | unminimize
到您的 Dockerfile。“ unminimize
”命令(/usr/local/sbin/unminimize
)撤消最小化过程;因为它是交互式的,并且会询问许多“ y/n
”问题,所以我们使用“ yes
”命令,它会不断打印字符串“ y
”直到被终止。
答案2
Canonical 并没有在未经用户同意的情况下更改镜像。您获得的是ubuntu-minimal
大多数云托管提供商和 Docker 等容器使用的预打包版本。
上下文引用:
最小 Ubuntu 是一组 Ubuntu 映像,专为大规模自动部署而设计,可在各种云基底上使用。它们在目标计算基底上使用优化的内核和优化的启动过程。这些映像的默认软件包集大大减少,没有太多方便交互使用的工具。它们更小、启动速度更快,并且随着时间的推移需要的安全更新更少,因为它们安装的软件包更少。
要回答你的问题 - 你有一个以上的选择:
- 使用 ubuntu-minimal 以外的其他镜像作为基础镜像
- 自定义镜像以包含你需要的包
答案3
为了防止最小化docker ubuntu镜像,我编写了一个dockerfile。请使用以下dockerfile内容部署容器。
From ubuntu
#Purpose: How to deploy ubuntu container without minimized packages
#RUN apt-get install apt-utils -y
ENV DEBIAN_FRONTEND noninteractive
ENV TZ=Asia/Kolkata DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt install tzdata -y && apt install net-tools vim man file -y
RUN yes| unminimize
RUN apt-get update -y && apt-get upgrade -y && apt-get install ubuntu-minimal ubuntu-server-minimal -y
RUN apt-get install -y vim perl wget tar man sudo adduser netstat-nat net-tools curl w3m
RUN useradd -m -s /bin/bash ubuntu
RUN usermod -aG sudo ubuntu && echo "ubuntu ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ubuntu
RUN chmod 044 /etc/sudoers.d/ubuntu
USER ubuntu:ubuntu
WORKDIR /home/ubuntu
CMD ["/bin/bash"]
#docker run -itd --privileged #type_here_target_image_id /usr/sbin/init #command to run systemctl inside docker container