Dockerfile的一個例子以及CMD和ENTRYPOINT區別說明(九)

目錄

1.Dockerfile的一個例子

1.思路

2.創建/root/docker/mycenos/Dockerfile

3.編寫Dockerfile

4.構造鏡像build

5.運行鏡像

6.進入鏡像                          ​

2.CMD與ENTYRPOINT區別

1,CMD說明

2,ENTRYPOINT說明

3,自定義ls鏡像來說明CMD和ENTRYPOINT的區別


1.Dockerfile的一個例子

 

1.思路

創建一個自定義的centos  裏面有vim 和net-tools

2.創建/root/docker/mycenos/Dockerfile

Touch Dockerfile

3.編寫Dockerfile

                                        

4.構造鏡像build

如果你的文件不是Dockerfile

Docker build -f /root/mycentos/Dockerfile  -t mycentos:1.0  .

否則

Docker build -t mycentos:1.0 .

5.運行鏡像

                                           

6.進入鏡像

                                         

 

 

2.CMD與ENTYRPOINT區別

 

1,CMD說明

Dockerfile 中可以有多個CMD的命令,但只有最後一個生效,CMD會被docker run之後的參數替換掉

可以使用tomcat的案例演示

2.1查看tomcat的Dockerfile

                                                     

從上面的可以看出最後執行了一個catalina.sh的命令  相當於./bin/catalina.sh  
運行如下命令,可以看出下圖的效果

docker run -it -p 9999:8080 tomcat ls -lh

                                     

發現這個tomcat的容器啓動之後就退出了

那是因爲在啓動容器的時候後面加了ls -lh那麼會覆蓋Dockerfile裏面的  CMD ["catalina.sh", "run"]

 

 

2,ENTRYPOINT說明

使用ENTRYPOINT來運行命令,在run 運行的參數會追加到新的命令後面

 

 

3,自定義ls鏡像來說明CMD和ENTRYPOINT的區別

目地:講解CMD和ENTRYOINT的區別

編寫Dockerfile

FROM centos
CMD [ "ls", "-a" ]

構建鏡像

docker build -t myls:1.2 .

啓動鏡像

docker run -it myls:1.2 -lh

                                            

出現錯誤,這是因爲Dockerfile裏面使用的是CMD ["ls", "-a"]運行是傳一個-lh過去會覆蓋

修改Dockerfile

FROM centos
ENTRYPOINT [ "ls", "-a" ]

構建鏡像

docker build -t myls:1.3 .

運行鏡像

docker run -it myls:1.3 -l

                                            

發現 【 -l 】被追加到 ls 後面了哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章