dockerfile定制鏡像的使用


  就是寫個docker的腳本然后依次運行,有點類似於gitlab中持續化集成的一系列步驟的自動部署和程序的順序執行。

以tomcat為例 ,通常我們在

usr/local/
目錄下

創建文件夾tomcat mkdir tomcat

然后需要創建一個大小寫敏感的Dockerfile文件 可以vi 可以vim可以touch Dockerfile

然后編輯Dockerfile文件

第一行:from 鏡像名 指定一個基礎鏡像 類似於Java類中的指定父類 這里from tomcat 

接下來就能進行其他的一些操作 比如新建文件,執行其他命令,甚至你能夠進入某個目錄下執行一些命令

COPY 和run或者其他如volume指定數據卷 

數據卷:容器內和容器寄生者兩者共享文件夾 比如指定的一些數據文件如data logs之類的,因為如果啟動容器時有指定 -rm的話關閉容器意味着刪除該容器(那就當然包括了其中的文件)所以通常不建議在容器中存儲數據。但可以存儲在volume中

指定volume:

VOLUME 宿主機目錄  容器目錄

CMD 容器啟動執行命令 和ENTRYPOINT作用用法一樣:通常都是執行某個.sh文件 如tomcat的shutdown.sh 或zookeeper的zkServer.sh之類的

二者區別:

  首先二者都是作為容器啟動時執行的命令:但是CMD命令會被docker run中的參數覆蓋 而ENTRYPOINT不會

也就是只要你在ENTRYPOINT中指定的內容,它總是會被執行,而cmd中則不會。所以在cmd中設置建議內容 ENTRYPOINT中設置強制內容。

 

我覺得在docker compose中更好。。。

copy就是復制

EXPOSE 8080 暴露端口 可以暴露多個要寫多個EXPOSE 不能直接跟要不然你自己都不清楚

 

run:就普通的執行shell命令 執行shell腳本 

這里還有必要提一下 一些Run命令如果需要在指定的目錄下進行的話不要cd后執行run,在run之前使用workdir指定下工作目錄,否則run的命令可能會很奇怪,而者一點都不奇怪。。。

ENTRYPOINT

其他的就正常根據需求即可。

WORKDIR 指定接下來的命令指定的工作區(直到下一個WORKDIR改變或者cd改變目錄)

可參照

FROM tomcat8

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR
ENV OPENSSL_VERSION 1.1.0f-3+deb9u2
RUN.。。。。。。。一些亂七八糟的操作

 

編輯好Dockerfile后保存 esc :wq

准備構建鏡像:

docker build 后接參數 . 當在存在Dockerfile的目錄下執行時可以不指定Dockerfile的目錄 其他的話指定Dockerfile使用(默認使用Dockerfile作為其docker的Dockerfile) docker build -f 接目錄文件名。指定構建的鏡像的名稱: -t 后接鏡像名

執行上條語句 當鏡像不存在時 docker從網上拉取,並依次執行你設置的一系列內容。 '.'上面這個點代表着context 指定當前目錄有Dockerfile  如果沒有Dockerfile的話請在 -f后面指定

查看鏡像是否構建成功:docker images 只要不是虛懸的有是成功了

然后啟動鏡像 :

docker run --name 接鏡像名稱  接其他參數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM