Docker映像只包含没有操作系统的软件

Docker映像只包含没有操作系统的软件,docker,dockerfile,rhel,Docker,Dockerfile,Rhel,我有一个在RHEL7服务器上运行的PROD环境。我想使用docker进行部署。我想把所有的软件和应用程序打包成一个Docker映像,而不使用基本操作系统。因为我不想在RHEL上面再加一层。另外,我也找不到RHEL的官方基地图片。可能吗 我看到一些关于“从头开始”的老帖子,但看起来它在Docker的最新版本——1.12.5中不起作用 如果这是不可能的,有什么建议吗 Docker的设计目的也是为了抽象操作系统的依赖关系——这就是它构建的目的。除此之外,它还封装了运行时、内存和其他内容,特别是作为ch

我有一个在RHEL7服务器上运行的PROD环境。我想使用docker进行部署。我想把所有的软件和应用程序打包成一个Docker映像,而不使用基本操作系统。因为我不想在RHEL上面再加一层。另外,我也找不到RHEL的官方基地图片。可能吗

我看到一些关于“从头开始”的老帖子,但看起来它在Docker的最新版本——1.12.5中不起作用


如果这是不可能的,有什么建议吗

Docker的设计目的也是为了抽象操作系统的依赖关系——这就是它构建的目的。除此之外,它还封装了运行时、内存和其他内容,特别是作为chroot的一个更好的变体使用(比如说,使用超类固醇的chroot)

看起来您既不想要运行时分离,也不想要操作系统层分离(依赖关系)——因此docker对您来说毫无意义


使用docker部署并不“简单”,也不像使用其他工具那样简单。您可以使用capistrano,或者,可能类似于实际上不需要将软件捆绑到docker容器中即可“部署”的软件,它也可以在裸体上工作,并使用自己的打包格式。因此,您有一个最先进的部署解决方案,通过habitat,您以后甚至可以使用docker容器进行升级。

您是否试图将环境中的所有应用程序打包到一个容器中?这在docker中通常是不好的做法,因为他们建议在每个容器中使用单个服务。要么将整个应用程序编译成一个独立的可执行文件,并且没有依赖项,要么将docker用于基本操作系统。我想将我的应用程序(目前只有一个应用程序)与操作系统和其他依赖项分开。我的问题是,我不想让我的基本映像具有“FROM:RHEL”来在我的主机操作系统上引入一个附加层。您可以始终使用一些超最小值作为基本映像(例如alpine)。当docker启动一个容器时,它只启动一个进程。如果您的应用程序是Java,那么它将启动JVM。您需要在映像中提供的是JVM及其所需的所有外部LIB。因此,使用Ubuntu或RHEL作为基础仅对构建过程(已知的pkg repos或版本)有意义,当应用程序启动时,它将只使用它需要的libs,而忽略图像的其余部分。