有(至少)三种方式来解释你的问题:
-
哪些包安装在容器内;
-
什么文件在那里:探索容器的文件系统;
- what 图像和图层 https://docs.docker.com/storage/storagedriver/#images-and-layers容器由什么组成?
1. List packages安装在容器中
获取已安装软件包列表的方式取决于发行版。最受欢迎的家庭有以下三个:
- Alpine,基于 musl 和 BusyBox 的轻量级 Linux 发行版
- 基于 Debian(Debian、Ubuntu)
- 基于 rpm(RHEL、CentOS 和 Fedora)
基于 Alpine 的容器
Use apk info -vv
命令:
docker exec -i <container_id_1> apk info -vv | sort
基于 Debian 或 Ubuntu 的容器
Use dpkg -l
命令:
docker exec -i <container_id_1> dpkg -l
基于 RHEL、CentOS 和 Fedora 的容器
Use rpm -qa
or yum list installed
命令:
docker exec -i <container_id_1> rpm -qa
docker exec -i <container_id_1> yum list installed
2. 探索容器文件系统
要查看目录结构,您可以使用bash
& tree
或者专门为探索 docker 镜像而开发的酷工具
tree
docker exec -i <container_id_1> tree /
Note:并非所有图像都包含tree
命令。
docker export
with tar
docker export adoring_kowalevski > contents.tar
然后,您可以探索contents.tar
使用您首选的存档器。 IE。为了tar
:
tar -tvf contents.tar
3.专用工具(探索图像和图层 OverlayFS
)
瓦古德曼/潜水
wagoodman/dive:用于探索 docker 镜像中每一层的工具 https://github.com/wagoodman/dive
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive:latest \
<image_name|image_id>
A tool for exploring a docker image, layer contents, and discovering ways to shrink your Docker image size.
托马斯托梅切克/森
TomasTomecek/sen:docker 引擎的终端用户界面 https://github.com/TomasTomecek/sen
docker run -v /var/run/docker.sock:/run/docker.sock -ti -e TERM tomastomecek/sen
it can interactively manage your containers and images:
justone/dockviz
justone/dockviz:可视化 Docker 数据 https://github.com/justone/dockviz
$ dockviz containers -d -r | dot -Tpng -o containers.png
容器通过链接标记线进行可视化。未运行的容器呈灰色。
$ dockviz containers -d -r | dot -Tpng -o containers.png