docker 覆盖 entrypoint_跟我一起学docker(八)--Dockerfile
1.利用Dockerfile創(chuàng)建鏡像
什么是Dockerfile?
定義:Dockerfile是一個文本格式的配置文件,用戶可以使用Dockerfile快速創(chuàng)建自定義鏡像。
基本結(jié)構(gòu):
Dockerfile由一行行的命令語句組成。并且支持以#開頭的注釋行。一般Dockerfile分為四個部分:基礎(chǔ)鏡像信息、維護(hù)者信息、鏡像操作指令和容器啟動時的指令。
Dockerfile示例:
#This is a Dockerfile
#Author:liming
#第一行必須指定基礎(chǔ)鏡像
FROM ubuntu
#維護(hù)者信息
MAINTAINER <394498036@qq.com>
#鏡像的操作指令
RUN apt-get update
RUN apt-getinstall -y nginx
RUN echo “daemonoff:” >> /etc/nginx/nginx.conf
#容器啟動時的指令
CMD /usr/sbin/nginx
操作一下:
首先創(chuàng)建目錄testDockerfile并進(jìn)入
vi Dockerfile
創(chuàng)建命令:
docker build –t =“”.
注意:執(zhí)行此命令要和Dockerfile在同級目錄,文件名稱必須為Dockerfile。命令后面的”.”表示在當(dāng)前目錄下執(zhí)行。
2.Dockerfile指令集
1 FROM
格式為 FROM 或: .
第一條指令必須為FROM指令,用于指定基礎(chǔ)鏡像。
2 MAINTAINER
格式為 MAINTAINER ,指定維護(hù)者信息。
3 RUN
格式為 RUN ,會在shell終端運(yùn)行命令。
4 EXPOSE
格式為 EXPOSE [ ...],容器需要暴露的端口號。鏡像啟動可以通過 –P 或 -p 進(jìn)行端口映射的綁定。
5 ENV
格式為 ENV 。
指定一個環(huán)境變量,可以被后續(xù)的RUN引用,并且在容器中記錄該環(huán)境變量。
6 ADD
格式為 ADD 。
該命令將復(fù)制指定的到容器中的。其中可以是Dockerfile所在目錄的一個相對路徑;也可以是url,還可以是tar文件(自動解壓)。
7 VOLUME
格式為 VOLUME [path]。
創(chuàng)建一個可以從本地主機(jī)或其他容器掛載點,一般用來存放需要保持的數(shù)據(jù)。
8 USER
格式為 USER 。
指定運(yùn)行容器時的用戶名,后續(xù)的RUN也會指定該用戶。
9 WORKDIR
格式為 WORKDIR 。
指定工作空間,運(yùn)行完WORKDIR后,后續(xù)執(zhí)行的RUN、CMD、ENTRYPOINT都會在此目錄下執(zhí)行。
10 COPY
格式為 COPY 。
復(fù)制本地主機(jī)的到容器中的,目標(biāo)路徑不存在時,會自動創(chuàng)建。
當(dāng)使用本地目錄為源目錄時,推薦使用COPY。
11 CMD
推薦格式為 CMD [“executable”,”param1”,”param2”] 。
作為ENTRYPOINT的默認(rèn)參數(shù)為 CMD[”param1”,”param2”]。
指定容器的啟動命令,每個Dockerfile只能有一條CMD命令,如果指定多條,只有最后一條會執(zhí)行。
用戶啟動容器時指定運(yùn)行命令,會覆蓋掉Dockerfile中的CMD命令。
12 ENTRYPOINT
格式為 ENTRYPOINT [“executable”,”param1”,”param2”]。
配置容器啟動后的命令,可被docker run提供的--entrypoint參數(shù)覆蓋。
每個Dockerfile只能有一條ENTRYPOINT命令,如果指定多條,只有最后一條會執(zhí)行。
3.容器內(nèi)安裝工具的方法
4.Dockerfile最佳實踐
1 錯誤定位
每個Dockerfile的指令可以生成新的一層鏡像,如果通過Dockerfile創(chuàng)建鏡像出錯,可以根據(jù)出錯所在步驟的上一層啟動容器,然后手工執(zhí)行出錯層的命令,以達(dá)到調(diào)試目的。
2 好的使用習(xí)慣
http://dockone.io/article/131
http://dockone.io/article/132
PS:感謝大家支持,我會每天繼續(xù)寫docker技術(shù)文章。分享給大家。感謝大家的轉(zhuǎn)發(fā),關(guān)注和收藏。
總結(jié)
以上是生活随笔為你收集整理的docker 覆盖 entrypoint_跟我一起学docker(八)--Dockerfile的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端滚动穿透问题
- 下一篇: Linux笔记-iptables开放指定