如何从头开始创建Dockerfile

时间:2017-09-11 14:10:15

标签: docker dockerfile

我是Docker容器的新手。我需要从头开始创建一个新图像。

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

要求:

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

我的Docker信息:

C:\Users\Satish_D1\Desktop\Playground>docker info
Containers: 5
Running: 1
Paused: 0
Stopped: 4
Images: 4
Server Version: 17.06.2-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.41-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.196GiB
Name: moby
ID: DEB5:62EN:AUOA:MNHN:XBSI:XXXR:DRF6:YJPD:4D2Y:672Y:R6EE:DLFG
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 22
Goroutines: 34
System Time: 2017-09-11T13:31:33.4927898Z
EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:127.0.0.0/8
Live Restore Enabled: false

我的工作到现在为止:

我创建了一个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 

Image01

Image02

先谢谢,
萨蒂什南比亚。

1 个答案:

答案 0 :(得分:0)

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

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

如果您决定使用临时基础,那么我将在Docker集线器上查看所需的jdk图像,然后关注图像树,直到您开始讨论并查看重新创建所需的所有步骤那个jdk图片。如果要重新创建,则可能需要签出多个回购。如果您想使用Windows而不是Linux二进制文件执行此操作,那么您需要更改Docker主机设置并查看重新创建Windows核心基础映像。