为什么安装sudo后docker镜像增长如此之快?



我有一个基于oracle linux的本地docker映像,用于安装oracle数据库。这更像是一个docker问题,而不是一个DB问题。

有一些相当大的数据文件(约12GB)。

通常当我做一个docker提交时,它会稍微增加图像的大小。

我在机器上安装了sudo,突然每次我提交映像时,它开始将映像的大小增加一倍(12GB->24GB->50GB)。

我想我可以找到没有sudo的生活方式,但是有人猜猜为什么仅仅运行"yum install sudo"作为根会导致这么大的图像大小?我不知道还能提供什么细节。

docker commit:

docker commit my-container the-image:v1

我用du -sh遍历了整个图像并且没有额外的数据文件可以解释这个大小。

我确实有一些挂载点和卷,但据我所知,这些不应该包含在图像中,即使它们包含,图像大小最终也大于卷的总和。

是否有可能将交换空间写入映像?我已经关闭了数据库,不知道这与sudo命令是否安装有什么关系。

我用下面的代码代替sudo。从本质上讲,有一个入口点脚本必须提取带有数据库位的tar(到docker卷中)。我在提取数据时遇到了许可问题。似乎docker总是将卷的所有者更改为root,而我需要它是oracle用户。无论如何,我在我的脚本中添加了这个,它的工作很好:

echo "myRootPassword" | su -c "chown oracle:oinstall /ORCL" root 

我想我仍然好奇为什么添加sudo会导致这个问题,但不好奇在上面浪费更多的时间。

  • 你可以通过从ubuntu运行一个基本镜像来复制它。
  • 将基本映像提交到第二个映像
  • 然后运行并ssh到第二个映像并安装sudo
  • 最后提交图像到第三个图像。第三张图片比第二张图片大1GB。

我想我对提交时图像分层的方式有一个基本的误解。有时,提交似乎创建了一个稍大的图像,有时它必须采用以前的图像并添加当前图像(12g+12g)。我想这与sudo无关——我只是碰巧在错误的时间添加了sudo,所以看起来是相关的。

问题是我试图建立一个数据库图像,很难做到这一切在1 Docker文件。因此,我创建了一个基本映像,并使用x11转发在正在运行的容器中运行oracle install。在静默模式下安装Oracle DB是一件痛苦的事情,我花了整整一天的时间试图得到正确的响应文件。不管怎样,结束这个问题,因为它与sudo无关。

最新更新