您好,登錄后才能下訂單哦!
dockerfile 指令選項:
1、FROM
用法: FROM <image>
1)from指定構建鏡像的基礎源鏡像,如果本地沒有指定這個鏡像,則會自動從docker公共倉庫中pull下來
2)from必須是dockerfile中非注釋行的第一個命令,也就是說寫一個一個dockerfile必須從(除了注釋以外)from語句開始
3)from可以在一個dockerfile中出現多次,如果有需求在一個dockerfile中創建多個鏡像
4)如果from語句沒有指定鏡像的標簽,則默認就使用latest的標簽
2、MAINTAINER
用法: MAINTAINER <name>
指定創建鏡像的用戶
3、RUN
RUN:兩種使用方式
1) RUN
2) RUN "executable","param1","param2"
每條RUN指令是創建鏡像是執行的命令,并提交為新的鏡像,后續的RUN都在之前RUN提交后的鏡像為基礎,鏡像是分層的,可以通過一個獎項的任何一個歷史提交點來創建,類似遠嗎的版本控制。
exec方式會被解析為一個JSON數組,所以必須使用雙引導而不是單引導。exec方式不會調用一個命令shell所以也就不會集成相應的變量
如:RUN [ "echo","$HOME" ] 這種方式是不會達到輸出HOME變量的
正確的方式應該是: RUN [ "sh","-c","echo","$HOME" ]
RUN產生的緩存在一次構建的時候是不會失效的,會被重用,可以使用--no-cache選項,即docker build --no-cache ,如此便不會緩存
4、CMD
CMD 有三種使用方式:
1)CMD "executable","param1","param2"
2)CMD "param1","param2"
3)CMD "commamd","param1","param2"
CMD就是容器啟動時執行的命令,如果用戶啟動容器時指定了運行的命令,則會覆蓋掉CMD指定的命令。
注:CMD指令在dockerfile中只能使用一次,如果有多個,則只有最后一個會生效
CMD的目的是為了在啟動容器時提供一個默認的命令執行選項。如果用戶啟動容器時指定了運行的命令,則會覆蓋掉CMD指定的命令
CMD會在啟動容器的時候執行,build時不執行,而RUN只是在構建的時候執行,后續鏡像構建完成后啟動容器就與RUN無關了
5、EXPOSE
用法:EXPOSE <port> [<port>...]
告訴docker服務端容器對外映射的本地端口,需要在docker run 的時候使用-p或者-P選項生效
6、ENV
ENV <key> <value> #這樣設置只能設置一個變量
ENV <key>=<value> ..... #這樣允許寫多個變量
例子:
ENV myname="john" myDOg=rex\ the\ dog\
mycat=fluffy
相當于
ENV myName John
ENV myDog Rex The Dog
ENV myCat fluffy
7、ADD
用法:ADD <源地址> <目標地址>
ADD復制本地主機文件、目錄或者遠程文件URLS 添加到容器指定的路徑中去。
支持通過Go的正則模糊匹配
例:
ADD hom* /mydir #以hom開頭的所有文件拷貝到容器中的/mydir
ADD hom?.txt /mydir #以hom開頭.txt結尾的所有文件拷貝到容器中的/mydir
8、COPY
用法:COPY <源地址> <目標地址>
copy復制新文件到容器中去,并且添加到容器指定的路徑中,用法和ADD相同,唯一不同的是不能指定遠程配置文件URLS
9、ENTRYPOINT
用法:
ENTRYPOINT "executable","param1","param2"
ENTRYPOINT command param1 param2(shell form)
配置容器啟動后執行的命令,并且不可被docker run提供的參數覆蓋,而CMD是可以被覆蓋的。如果覆蓋則可以使用docker run --entrypoint選項
每個dockerfile中只能有一個 ENTRYPOINT,當指定多個時,只有最后一個生效
Exec form ENTRYPOINT 例子:
通過 ENTRYPOINT使用exec form方式設置穩定的默認命令和選項,而使用CMD添加默認之外經常被改動的選項。
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
通過 Dockerfile 使用ENTRYPOINT展示前臺運行 Apache 服務
FROM debian:stable
RUN yum update && yum install httpd -y
EXPOSE 80 443
VOLUME ["/var/www/html", "/var/log/apache2", "/etc/apache2"]
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
shell form ENTRYPOINT 例子:
這種方式會在/bin/sh -c 中執行,會忽略任何CMD或者docker run命令選項,為了確保docker stop能夠停止長時間運行ENTRYPOINT的容器,確保執行的時間使用exec選項
10、VOLUME
用法:VOLUME ["/data"]
創建一個可以從本地主機或其他容器的掛載點
11、USER
使用哪個用戶跑container
例:
ENTRYPOINT ["memcached"]
USER daemon
12、WORKDIR
相當于CD命令
13、ONBUILD
ONBUILD 指令的命令在構建鏡像時不執行,而是在他的子鏡像中執行
看完上述內容,你們對Docker容器的鏡像文件Dockerfile有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。