目錄
2.創建/root/docker/mycenos/Dockerfile
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 後面了哦