-2

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

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

通常,当我执行 docker commit 时,它会稍微增加图像的大小,并添加任何新添加的内容。

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

我想我可以找到不使用 sudo 的方法,但有人猜到为什么仅仅以 root 身份运行“yum install sudo”会导致这么大的图像大小?我不知道要提供什么其他细节。

docker 提交中没有什么花哨的:

docker commit my-container the-image:v1

我已经用du -sh浏览了整个图像,并且没有其他数据文件可以解释大小。

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

有没有机会将交换空间写入图像?我关闭了数据库,不知道这与安装或不安装 sudo 命令有什么关系。

4

2 回答 2

0

我想我对提交时图像如何分层存在根本性的误解。有时提交似乎创建了一个稍大的图像,有时它必须获取前一个图像并添加当前图像(12g + 12g)。我想这毕竟与 sudo 无关 - 我只是碰巧在错误的时间不断添加 sudo 所以它似乎相关。

问题是我试图构建一个数据库映像,并且很难在 1 个 Docker 文件中完成所有这些工作。所以我正在创建一个基本映像并使用 x11 转发在正在运行的容器中运行 oracle 安装。在静默模式下安装 Oracle DB 很痛苦,我花了最后一整天时间试图让响应文件正确。无论如何关闭这个问题,因为它与 sudo 无关。

于 2021-10-29T15:22:12.997 回答
0

我使用以下内容而不是 sudo。本质上,有一个入口点脚本必须提取带有数据库位的 tar(到 docker 卷中)。我在提取数据时遇到了一些权限问题。似乎docker总是将卷的所有者更改为root,我需要它成为用户oracle。无论如何,我在我的脚本中添加了这个并且它工作正常:

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

我想我仍然很好奇为什么添加 sudo 会导致这个问题,但不想再浪费时间了。

  • 您可以通过从 ubuntu 运行基本映像来复制它。
  • 将基础镜像提交到第二个镜像
  • 然后运行并 ssh 进入第二个映像并安装 sudo。
  • 最后将图像提交到第三张图像。第三张图片比第二张图片大 1GB。
于 2021-10-26T15:16:09.760 回答