【VMCloud雲平臺】擁抱Docker(六)關於DockerFile(2)

上一章,我們講了DockerFile的最基本構成,講了兩種Dockerfile的構建Image方式,這一篇,我們將來介紹DockerFile裏面所帶的N多參數。

以下就是今天所要說DockerFile涉及的環境:

wpsB1A7.tmp

DockerFile簡易示意圖:

wpsB1B8.tmp

1、 RUN參數:我們在上一章創建的DockerFile里加入參數Run yum install –y vim*:

wpsB1C8.tmp

2、 嘗試構建,你就會發現Dockerfile的RUN參數生效了:

wpsB1D9.tmp

wpsB1EA.tmp

3、 所以,RUN的作用就是可以幫你運行一些需要預運行的命令,但是最好不要在RUN裏面做類似“yum update”、“apt-get update”之類的操作,這並不符合Dockerfile的最佳實踐。

4、 CMD參數:介紹到RUN就不得不介紹下CMD了,CMD命令與RUN的區別在於,CMD在一個DockerFile只能用一次,如果在DockerFile存在多個CMD的話,默認只運行最後一條,比如你可以在最後一行寫上一句“Enjoy your docker images”,CMD的調用比較特殊,是在通過以你的images構建完成容器後自動觸發,比如docker run ImagesName:

wpsB1FA.tmp

5、 EXPOES參數:這個參數用來指定Container需要暴露給其他Container的端口,相當於構建內部網絡,與-p的區別在於,expoes是對內提供端口方法(Container之間,比如ngx訪問mysql),-p參數是映射端口相當於NAT,比如:

wpsB1FB.tmp

6、 構建完成:

wpsB21B.tmp

7、 接着,我們通過這個images創建兩個容器,就明白EXPOSE參數的作用了,可以看到下圖有出現“port 22”:

wpsB23C.tmp

8、 但是在端口映射表裏是看不到的,證明這是內部映射端口:

wpsB25C.tmp

9、 進入其中一個容器,使用nmap測試另外一個容器的端口是否能夠相通:

wpsB28C.tmp

10、 ENTRYPOINT參數:就此可以看出EXPOSE的作用,眼尖的人兒可能看到我使用了ENTRYPOINT這個參數,ENTRYPOINT這個參數的屬性跟CMD有點兒像,同樣是多個參數存在的時候只執行最後一條,這個例子中,我使用了該參數將SSH服務作爲一個後臺服務進行運行:

wpsB29C.tmp


 

logo

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