Ubuntu 14.04 | 使用docker来隔离不可信的C ++程序

正如标题所说,我需要运行一个不可信的C ++程序到我的prod服务器。 我正在尝试与docker工人,但有一些事情,我真的不清楚:

  • 我从Docker Hub的14.04镜像开始创build了自己的镜像。
  • 我已经运行了容器,安装了build-essential,autoconf和dependencies
  • 然后我退出了容器,并承诺修改从Ubuntu的14.04一个开始build立一个新的形象
  • 然后我跑: docker run -d <MY IMAGE ID> /root/myprogram & ,它似乎正常工作

但我有一个疑问:因为不可信的c + +程序,我必须运行使用数据库,并且因为它每隔10分钟更新db值…我必须每10分钟提交更改到图像,以避免潜在的数据失利?

如果是这种情况,我必须切换到另一个虚拟化环境…..

另外,我正在尝试pipe理一个非root用户的容器,任何人都试过这个,并有评论/build议呢?

谢谢。

您不必在Docker容器内部以“root”身份运行,尽pipe您可以(理论上)按照您的意愿安全地执行此操作。

通常情况下,当你想保存持久数据时,你需要的是一个Docker卷,它允许你从Docker容器中的“主机”文件系统“挂载”一个文件夹。 像数据库写入文件的文件夹一样。 如果您在主机上select一个安全的文件夹并将其视为“危险”(显然不运行在主机上显示的文件,它们是不可信的),这对于不可信的代码是相当安全的。

以下是如何使用卷 :

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

在技​​术上,在Linux中,Docker并不像你想象的那样是虚拟化 – 它不是虚拟机。 这更像是一个FreeBSD jail(chroot和进程隔离)。