如何从头开始创建Dockerfile

如何从头开始创建Dockerfile,docker,dockerfile,Docker,Dockerfile,我不熟悉Docker集装箱。我需要从头开始创建一个新图像 我在桌面上有一个名为“游乐场”的文件夹。在该文件夹中,我有一个特定于Java的版本和OATS文件夹,在OATS文件夹中,我有一个用于安装OATS的.exe 要求: 我需要创建一个映像并将该映像转换为一个容器,当我运行该容器时,它应该安装Java和OATS应用程序 我的码头工人信息: 我至今的工作: 我已经创建了Dockerfile,下面是我在Dockerfile中尝试的代码: FROM scratch COPY jdk-7u7

我不熟悉Docker集装箱。我需要从头开始创建一个新图像

我在桌面上有一个名为“游乐场”的文件夹。在该文件夹中,我有一个特定于Java的版本和OATS文件夹,在OATS文件夹中,我有一个用于安装OATS的.exe

要求: 我需要创建一个映像并将该映像转换为一个容器,当我运行该容器时,它应该安装Java和OATS应用程序

我的码头工人信息: 我至今的工作: 我已经创建了Dockerfile,下面是我在Dockerfile中尝试的代码:

   FROM scratch
   COPY jdk-7u79-windows-x64 
   COPY C:\Users\Satish_D1\Desktop\Playground\oats-win64-full-12.5.0.3.1012\setup.bat 

提前感谢,

萨蒂什。

有几件事是错误的。首先,根据文件名,您似乎试图在Linux运行时运行Windows二进制文件。这不起作用,Linux内核不会运行Windows二进制文件

接下来,当您尝试使用scratch时,映像文件系统上没有任何内容,它是完全空的。它不包括库、shell和分发包工具。对于静态链接的二进制文件和将整个操作系统文件系统打包为tar文件并作为第一步提取的操作系统基础映像,通常会使用scratch。如果您的jdk不包含所有OS库、shell和其他依赖项,那么您需要的不仅仅是“scratch”作为基础映像


如果您决定使用scratch作为您的基础,那么我将在Docker hub上查看所需的jdk映像,并沿着映像树返回,直到您开始使用scratch并查看重新创建该jdk映像所需的所有步骤。如果你想重新创建,你可能需要签出多个回购协议。如果您想用Windows而不是Linux二进制文件执行此操作,那么您需要更改Docker主机设置,并研究重新创建Windows core base映像。

有一些问题非常突出。首先,根据文件名,您似乎试图在Linux运行时运行Windows二进制文件。这不起作用,Linux内核不会运行Windows二进制文件

接下来,当您尝试使用scratch时,映像文件系统上没有任何内容,它是完全空的。它不包括库、shell和分发包工具。对于静态链接的二进制文件和将整个操作系统文件系统打包为tar文件并作为第一步提取的操作系统基础映像,通常会使用scratch。如果您的jdk不包含所有OS库、shell和其他依赖项,那么您需要的不仅仅是“scratch”作为基础映像

如果您决定使用scratch作为您的基础,那么我将在Docker hub上查看所需的jdk映像,并沿着映像树返回,直到您开始使用scratch并查看重新创建该jdk映像所需的所有步骤。如果你想重新创建,你可能需要签出多个回购协议。如果您想使用Windows而不是Linux二进制文件来执行此操作,那么您需要更改Docker主机设置,并考虑重新创建Windows core基本映像

   FROM scratch
   COPY jdk-7u79-windows-x64 
   COPY C:\Users\Satish_D1\Desktop\Playground\oats-win64-full-12.5.0.3.1012\setup.bat