我正在學習碼頭工具,並提及在線課程。經過一段舒適程度後,我正在嘗試製作一個dockerized java圖像,一個簡單的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的形象,這是給我下面的錯誤:
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
這是工作的罰款。據我所知,scratch
沒有任何最低限度的操作系統,我的目標是構建具有應用程序及其依賴項的圖像,這就是Docker圖像的目標。
那麼,有什麼我失蹤或理解不好?任何人都可以幫我理解這個嗎?
但是,執行yum -y從日誌中安裝java時出現錯誤,因此無法理解從零開始提供的內容?你能否擴大你的答覆多一點。 – CuriousMind
Cmd啓動一個shell。你沒有殼。你沒有百勝餐飲。 – bmargulies
感謝您的回覆,我明白了。然而,我有一個疑問,主機操作系統是否提供了這些缺失的東西? Docker的這個概念不是爲容器提供服務,而是提供從主機內核到容器的服務?我可能是完全錯誤的,但是感覺在這裏分享這個想法。如果你的時間允許,請回復。 – CuriousMind