问题描述
我最近一直在摆弄 Docker 并尝试使用这个 image。我刚刚了解了 ENTRYPOINT 是什么以及 Docker 的几个新命令,但后来我想:如果我想更新该映像的 NMAP 版本怎么办?我继续尝试了 apt 的东西,然后我意识到它是在 Alpine 上构建的,而使用 apk 却发现它没有安装,我不知道为什么。
也许这张图片的主人删除了它?如果是这样,我是否应该能够对已安装的软件包执行更新,还是图像维护者的任务?
解决方法
正如您共享的映像的 dockerfile 中所见,它以 alpine linux 映像作为基础映像,并且没有任何 apk 删除步骤。此外,它在 dockerfile 的开头有两个参数,然后用于在此映像中安装 nmap:
ARG nmap_ver=7.91
ARG build_rev=4
这意味着你可以下载这个 Dockerfile,在本地将这个 Dockerfile 中的版本更改为你想要的版本,然后构建一个镜像:
docker build -t nmap_myversion .
然后用你自己的镜像运行一个容器:
docker run -d --name my_nmap nmap_myversion
要回答您的问题,在已创建的映像中更新软件不是一个好方法,因为它会在您的 docker 容器中创建一个新层,该层将在容器删除后丢失。 最好的选择是在图像中完成此操作。很好的例子是这个 nmap 图像是如何创建的(参见上面的 Dockerfile)