创build一个简单的Java应用程序作为docker图像
我正在学习docker工具,并提到在线课程。 经过一些舒适的水平,我现在正在尝试制作一个dockerized java图像,一个简单的Java应用程序。
我正在尝试使dockerized Java应用程序没有任何最小的操作系统,因此在Dockerfile中使用FROM scratch
。 以下是内容:
FROM scratch ADD FirstJavaApp.class . RUN yum -y install java CMD java FirstJavaApp
据我所知,任何应用程序的dockerized图像应该有所有的依赖符合(并为此目的,我已经在Dockerfile中添加了yum -y install java
)。
现在,当我使用这个Dockerfile构build图像时,它给了我下面的错误:
sudo docker build -t javaappusingscratch . Sending build context to Docker daemon 377.8MB Step 1/4 : FROM scratch ---> Step 2/4 : ADD FirstJavaApp.class . ---> Using cache ---> c624d7dc7c21 Step 3/4 : RUN yum -y install java ---> Running in 702829f38ad8 container_linux.go:265: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory" oci runtime error: container_linux.go:265: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory"
但是,如果我FROM scratch
FROM centos
FROM scratch
replace,它工作正常。 据我所知, scratch
没有任何最小的操作系统,我的目标是build立只有应用程序及其依赖的图像,这就是docker图像的目标。
那么,有什么我失踪或理解不好? 任何人都可以帮我理解这个吗?
你不能使用CMD
除非你有一个shell,而你scratch
没有shell。 一般来说,你会发现Java依赖于一堆不scratch
的东西。 你可以find比centos更薄的select(比如Alpine),但是它不会scratch
工作。
- 一次性CLI应用程序的Docker
- 如何在Dockerfile中设置命令历史logging
- Docker容器中的“dotnet运行”导致无法访问的url
- 不能调用从另一个程序发送的btrfs
- 如何以root用户Docker Cloud运行docker-compose
- 运行命令,在swarm集群中指定N个docker容器实例
- 在docker throw中用maven构build{} – > unix:// localhost:80:没有这样的文件或者导演
- 如何编辑泊坞窗图像中的文件?
- manage.py collectstatic:error:无法识别的参数: – 由Docker启动的shell脚本中的–noinput