从我的理解,使用an official Docker image应该给予我相同的默认distrib作为默认图像从官方仓库,或做一些与debootstrap
命令。请纠正我,如果我错了。
但我还是丢了几个包裹。
*为什么Docker镜像没有包含所有官方发布的默认包?
*有没有一种方法可以让我的Docker容器中的安装与默认安装完全相同,而无需手动构建带有包列表的容器?
下面是一个rsyslog
包的例子,Docker Debian镜像中缺少:它应该存在,因为它在实际的Debian稳定Bullseye中(package will be absent开始Bookworm
tho)。
另一个例子是nftables
:不存在于Docker Debian镜像中,但存在于默认的Debian安装中。
Docker镜像中没有rsyslog
$ docker pull debian
Using default tag: latest
latest: Pulling from library/debian
b0248cf3e63c: Pull complete
Digest: sha256:0a78ed641b76252739e28ebbbe8cdbd80dc367fba4502565ca839e5803cfd86e
Status: Downloaded newer image for debian:latest
docker.io/library/debian:latest
用docker run -it debian bash
运行它,然后用apt list --installed
检查:rsyslog
包不存在。
rsyslog
存在于debootstrap
默认安装中
在一个全新的serveur上,从一个live CD,我用debootstrap
命令installed Debian Bullseye 11.6。
/usr/sbin/debootstrap --arch amd64 --keyring=~/debian-release-11.gpg bullseye /mnt/debootstrap http://ftp.us.debian.org/debian
debootstrap安装后,工作系统已安装rsyslog
(grep -n syslog /var/log/dpkg.log
显示)。
**注意:**我已经用apt-cache rdepends --installed rsyslog
进行了双重检查:某些依赖项未安装rsyslog,默认情况下由debootsrap
自动安装。
1条答案
按热度按时间wrrgggsh1#
这看起来不像是一个编程问题,而是一个维护人员的问题。
容器并不等同于完全虚拟化的客户操作系统,而是单个应用程序。拥有操作系统基础是为了作为应用程序的支持层。
你说的没错,rsyslog软件包没有安装在debian:bullseye中。下面是使用
docker sbom debian:bullseye
的软件包列表,所以你可以看到这是非常有意的,镜像的内容是最小的和有限的。