我参与了一项努力,使研究界更容易使用进行科学分析的软件。通常,有问题的软件是由一个人或几个人编写的,而没有足够的重用计划,例如一个人在自己的计算机上编写 Python 脚本或 Matlab 模块。如果软件运行良好,其他人通常想自己尝试一下……但在某些情况下,要成功复制未记录或难以重新实现的环境可能是一个真正的挑战。
Docker 是一个很好的工具,可以帮助其他人重用这样的软件,因为它比编写 Vagrant 脚本在环境中安装软件的门槛更低。如果我给一个人一个 Docker 容器,她可以在里面做任何她想做的事情(编写代码、安装库、设置环境等。当它“完成”时,她可以保存它的图像并将图像发布到Docker 存储库并告诉另一位研究人员,“在这里,只需启动它并运行它......”
我们还在考虑使用容器作为我们自己的配置管理策略,用于交付和归档生产软件……至少是服务器端组件。
我们还使用 Python 和 shell 编写脚本来运行多个 Docker 容器的数据处理工作流。我们编写的一个演示是在图像上运行 OpenCV 以提取人脸,然后 ImageMagick 裁剪人脸,最后再次使用 ImageMagick 制作所有人脸的拼贴画。我们为 OpenCV 构建了一个容器,为 ImageMagick 构建了一个容器,然后编写了一个 Python 脚本以在每个容器上执行“docker run ...”并使用必要的参数。Python 脚本是使用docker-py项目完成的,该项目可以很好地满足我们的需要。