上一章,咱們講了DockerFile的最基本構成,講了兩種Dockerfile的構建Image方式,這一篇,咱們未來介紹DockerFile裏面所帶的N多參數。mysql
如下就是今天所要說DockerFile涉及的環境:sql
DockerFile簡易示意圖:vim
一、 RUN參數:咱們在上一章建立的DockerFile里加入參數Run yum install –y vim*:網絡
二、 嘗試構建,你就會發現Dockerfile的RUN參數生效了:ide
三、 因此,RUN的做用就是能夠幫你運行一些須要預運行的命令,可是最好不要在RUN裏面作相似「yum update」、「apt-get update」之類的操做,這並不符合Dockerfile的最佳實踐。測試
四、 CMD參數:介紹到RUN就不得不介紹下CMD了,CMD命令與RUN的區別在於,CMD在一個DockerFile只能用一次,若是在DockerFile存在多個CMD的話,默認只運行最後一條,好比你能夠在最後一行寫上一句「Enjoy your docker p_w_picpaths」,CMD的調用比較特殊,是在經過以你的p_w_picpaths構建完成容器後自動觸發,好比docker run ImagesName:3d
五、 EXPOES參數:這個參數用來指定Container須要暴露給其餘Container的端口,至關於構建內部網絡,與-p的區別在於,expoes是對內提供端口方法(Container之間,好比ngx訪問mysql),-p參數是映射端口至關於NAT,好比:blog
六、 構建完成:get
七、 接着,咱們經過這個p_w_picpaths建立兩個容器,就明白EXPOSE參數的做用了,能夠看到下圖有出現「port 22」:
八、 可是在端口映射表裏是看不到的,證實這是內部映射端口:
九、 進入其中一個容器,使用nmap測試另一個容器的端口是否可以相通:
十、 ENTRYPOINT參數:就此能夠看出EXPOSE的做用,眼尖的人兒可能看到我使用了ENTRYPOINT這個參數,ENTRYPOINT這個參數的屬性跟CMD有點兒像,一樣是多個參數存在的時候只執行最後一條,這個例子中,我使用了該參數將SSH服務做爲一個後臺服務進行運行: