创build一个没有映像备份的Linux盒子的确切副本

我是一个完整的networking开发者。 作为我工作的一部分,有时我需要pipe理开发和生产服务器。

我想保持生产和开发服务器在包和configuration中尽可能相同。

所以基本上,我想有我的需要时,旧的服务器的确切副本。

我不想使用磁盘映像,因为我无法在云提供者之间传输磁盘映像。 (有时我需要它)

为了实现我的需要,我正在使用安装特定版本的软件包的shell脚本。 例:

aptitude install -y apache2=2.4.18-2ubuntu3.1 aptitude install -y libapache2-mod-ruid2=0.9.8-3 ... and so on 

所以我想知道

  • 这是一个好方法吗?
  • 有没有更好的解决scheme?
  • 托pipe在存储库中的软件包的特定版本需要多长时间?

以你写的方式回答你的问题是由@kormoc给出的。 但是你用docker标记了它,虽然你的问题直接不涉及docker,但是我会给docker的方法来解决这个问题:

你想要的是从开发到生产具有相同的环境,而不是具有相同的包,这只是解决问题的一种方式。

Docker允许你打包你的应用程序,尽pipe你的服务器上安装了什么,你需要运行的所有东西。

你在你的Dockerfile中写下你需要的每个包:

 FROM ubuntu:trusty RUN aptitude install -y apache2=2.4.18-2ubuntu3.1 RUN aptitude install -y libapache2-mod-ruid2=0.9.8-3 

… 等等

然后你从它创build一个图像,并在你想要的服务器上运行这个图像。 唯一的要求是安装docker。

问候