目錄
- 構建自己的centos鏡像
- 步驟
- 1、編寫dockerfile文件
- 2、構建鏡像
- 3、測試運行
- 4、查看鏡像構建歷史記錄
- CMD和ENTRYPOINT的區別
- 編寫CMD測試dockerfile文件
- 編寫ENTRYPOINT測試dockerfile文件
構建自己的centos鏡像
docker pull centos
下載下來的鏡像都是基礎版本,缺少很多常用的命令功能,比如:ll
、vim
等等,
下面介紹制作一個功能較全的自己的centos鏡像。
步驟
1、編寫dockerfile文件
FROM centos MAINTAINER xiao<[email protected]> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim # vim命令 RUN yum -y install net-tools # ifconfig命令 EXPOSE 80 CMD echo $MYPATH CMD echo "---end--" CMD /bin/bash
2、構建鏡像
-f file 指定dockerfile文件的路徑
-t tag 指定name:tag
docker build -f ./mydockerfile -t mycentos:0.1 . Successfully built e7527f97f78a Successfully tagged mycentos:0.1
3、測試運行
docker images docker run -it mycentos:0.1
可以看到進入容器之后,直接就是在 /usr/local
目錄下,是因為dockerfile
配置的WORKDIR
這時,ifconfig
、vim
命令都可以使用了
4、查看鏡像構建歷史記錄
docker history imageID
CMD和ENTRYPOINT的區別
編寫CMD測試dockerfile文件
編寫dockerfile文件
FROM centos CMD ["ls", "-a"]
構建鏡像
docker build -f ./dockerfile -t cmd-test .
啟動鏡像
docker run imageID/iamgeName
測試發現,啟動鏡像時追加的命令替換了CMD
命令,如下圖所示:
編寫ENTRYPOINT測試dockerfile文件
每個Dockerfile
只能有一個ENTRYPOINT
,如果指定了多個,只有最后一個被執行,而且一定會被執行
FROM centos ENTRYPOINT ["ls", "-a"]
# nginx 鏡像 ENTRYPOINT [ "/usr/sbin/nginx", "-g", "daemon off;" ]
總結 CMD
命令會被啟動容器時追加的命令替換執行,
2.ENTRYPOINT
命令不會被啟動容器時追加的命令替換,而是合并執行