1. 程式人生 > 實用技巧 >製作dockerfile檔案使用的命令

製作dockerfile檔案使用的命令

dockerfile製作映象步驟和手動製作一個樣, 區別在於dockerfile中使用命令代替手動操作

# 描述性的資訊
FROM centos:targe(或FROM centos@序列號)    ----> 指定基於哪個映象

RUN cd
/data/xx && mkdir xx.file ----> run後執行bash相關命令, 例: RUN ["mysqld","--initialize-insecure","--user=mysql","...."] ---->執行非bash命令的寫法
EXPOSE
22 ----> 用於暴露埠, 多個埠時寫多行即可. EXPOSE
80 COPY 檔名 /目錄名 ----> 拷貝dockerfile同級檔案到映象的指定目錄, 如檔名處是個目錄, 則會把該目錄下所有檔案都cp到指定目錄
ADD file.tar.gz
/目錄名 ----> 拷貝dkf同級檔案到映象目錄, 並可自動解壓.tar壓縮的檔案, 如果目錄不存在其也會自動建立(add也可用於普通無壓縮檔案) ADD url /目錄名 ----> 也能從網路下載檔案放到指定目錄, 但不會自動處理壓縮檔案
VOLUME [
"目錄1", "目錄2"] ----> 製作映象時不執行, 生成容器時自動關聯目錄1和2, 不能用來關聯宿主機和容器
WORKDIR
----> 映象中的專用cd命令, 全域性唯一, 跳到某個目錄後就會一直在該目錄, 常使用相對路徑跳轉, 不好用, 不如用run命令執行cd好使 ENV ---->用於在dockfile中i當以變數, a="目錄" 呼叫語法: ${a}或$a
CMD [
"/usr/sbin/ssh","-D"] ----> 該命令在製作映象的時候不會執行, 而是在使用映象啟動容器時才執行 例: CMD ["/bin/bash","bash指令碼路徑"]
ENTRYPOINT
----> 作用及用法同上面的cmd, 但是如果在起容器時, 命令後指定要執行的命令則會覆蓋cmd的任務, 而使用entrypoint指定則不會被覆蓋 如: docker run
-d 容器id /bin/bash ----> 則/bin/bash任務會覆蓋cmd的任務 注: entrypoint高階用法能用來傳引數, 具體用法不詳
# 使用dockerfile生成映象 docker image build
-t "映象名" dockerfile路徑

dockerfile檔案格式架構:

# 描述性的資訊
FROM xxxx

RUN xxxx

EXPOSE 22
EXPOSE 80

CMD ["/bin/bash", "指令碼路徑"]