Ubuntu 14.04 | 使用 docker 隔离不受信任的 C++ 程序

Ubuntu 14.04 | 使用 docker 隔离不受信任的 C++ 程序

正如标题所述,我需要在我的生产服务器中运行不受信任的 C++ 程序。我正在尝试使用 docker,但有些事情对我来说确实不清楚:

  • 我从 Docker Hub 的 ubuntu:14.04 镜像开始创建了自己的镜像。
  • 我已经运行了容器,安装了 build-essential、autoconf 和依赖项
  • 然后我退出容器,并提交更改,从 ubuntu:14.04 开始构建新映像
  • 然后我跑了:docker run -d <MY IMAGE ID> /root/myprogram &它似乎工作正常

但我有一个疑问:由于我必须运行的不受信任的 C++ 程序使用数据库,并且它每 10 分钟更新一次数据库值……我是否必须每 10 分钟对图像提交一次更改,以避免潜在的数据丢失?

如果是这样的话,我必须切换到另一个虚拟化环境.....

另外,我正在尝试管理非 root 用户内幕容器,有人尝试过这个并且对此有意见/建议吗?

谢谢。

答案1

您不必在 Docker 容器内以“root”身份运行任何程序,尽管如果您愿意的话,您可以(理论上)安全地这样做。

通常,当您想要保存持久数据时,您需要一个 Docker 卷,它允许您将主机文件系统中的文件夹“挂载”到 Docker 容器“内部”。就像数据库写入文件的文件夹一样。只要您在主机上选择一个安全的文件夹并将其视为“危险”文件夹(显然不要在主机上运行其中出现的文件,它们是不受信任的),这在不受信任的代码方面是相当安全的。

方法如下使用音量

docker run -d myimagename -v /var/lib/myimages/untrusted/data/storage/on/host/:/path/in/container/for/db/ container-command

从技术上讲,在 Linux 中,Docker 并不是您所想象的虚拟化 —— 它不是 VM。它更像是 FreeBSD jail(chroot 和进程隔离)。

相关内容