日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker_DockerFile

發布時間:2024/9/30 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker_DockerFile 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DockerFile

Dockerfile是用來構建Docker鏡像的構建文件,是由一系列命令和參數構造的腳本。

構建三步驟:

1.編寫Dockerfile文件 2.docker build 3.docker run

DockerFile構建過程解析

Dockerfile內容基礎知識

1 每條保留字段指令都必須為大寫字母且后面要跟隨至少一個參數 2 指令按照從上到下,順序執行 3 #表示注釋 4 每條指令都會創建一個新的鏡像層,并對鏡像進行提交

Docker執行Dockerfile的大致流程

1 docker從基礎鏡像運行一個容器 2 執行一條指令并對容器作出修改 3 執行類似docker commit的操作提交一個新的鏡像層 4 docker再基于剛提交的鏡像運行一個新容器 5 執行dockerfile中的下一條指令直到所有指令都執行完成Dockerfile面向開發, Docker鏡像成為交付標準, Docker容器則涉及部署與運維。

DockerFile體系結構(保留字指令)

1 FROM 基礎鏡像,當前新鏡像是基于哪個鏡像的 2 MAINTAINER 鏡像維護者的姓名和郵箱地址 3 RUN 容器構建時需要運行的命令 4 EXPOSE 當前容器對外暴露出的端口 5 WORKDIR 指定在創建容器后,終端默認登陸的進來工作目錄 (沒有指定的話 就是根目錄) 6 ENV 用來在構建鏡像過程中設置環境變量 7 ADD 宿主機目錄下的文件拷貝進鏡像且ADD命令會自動處理URL和解壓tar壓縮包 8 COPY 類似ADD,拷貝文件和目錄到鏡像中。 將從構建上下文目錄中<源路徑>的文件/目錄復制到新的一層的鏡像內的<目標路徑>位置 9 VOLUME 容器數據卷,用于數據保存和持久化工作 10 CMD 指定一個容器啟動時要運行的命令 Dockerfile中可以有多個CMD命令,但只有最后一個生效,CMD會被docker run之后的參數替換 11 ENTRYPOINT 指定一個容器啟動時要運行的命令 ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數 12 ONBUILD 當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發

DockerFile案例

自定義鏡像mycentos

如果直接拉取的是阿里云的Centos鏡像

初始centos鏡像的默認路徑是/,而且不支持vim、iifconfig等命令。接下來就通過編寫dockerfile文件創建一個新的鏡像,使之默認路徑及相關命令都發生改變。

FROM centosENV mypath /tmp WORKDIR $mypathRUN yum -y install vim RUN yum -y install net-toolsEXPOSE 80CMD echo "success" CMD /bin/bash

編寫dockerfile

在Dockerfile的目錄下執行下列命令

docker build -t mycentos:1.3 . #后面還有一個點 不要忘記 docker build -f 指定dockerfile文件 -t 新鏡像名字:TAG


運行一下鏡像

docker run -it 新鏡像名字:TAG

發現默認路徑和相關命令都發現了改變

列出鏡像的變更歷史

docker history 鏡像名稱/ID

CMD-ENTRYPOINT命令

編寫一個Dockerfile文件

如果使用CMD的話只能是最后一個生效,那么假設要查看請求頁面的頭信息,加上參數i,那么命令就變成了

那么CMD -i便會覆蓋到掉上面的CMD命令,而我們希望的是加入-i參數,因此可以使用ENTRYPOINT命令

這時再執行只需在語句后加上-i參數即可

docker run myip -i

參數追加到原來的命令中,進一步去執行

之前的命令,就會變成以下的命令,而不是覆蓋

ENTRYPOINT ["curl","-s",-i "http://ip.cn"]

ONBUILD命令

先創建一個父類的dockerfile文件
再構建成鏡像

docker build -f /mydocker/Dockerfile2 -t myip_father .

再創建一個dockerfile文件,FPOM繼承的是myip_father這個鏡像

構建子鏡像并運行,發現父鏡像的ONBUILD被執行

自定義的tomcat9

先建立一個文件夾,放置以下文件

接下來就可以自己來編寫Dockerfile文件

FROM centosCOPY c.txt /usr/local/a.txtADD jdk-8u231-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.36.tar.gz /usr/local/ #安裝VIM編輯器 RUN yum -y install vim #設置工作訪問時的WORKDIR路徑,登陸落腳點 ENV MYPATH /usr/local WORKDIR $MYPATH #配置java與tomcat環境變量 ENV JAVA_HOME /usr/local/jdk1.8.0_231 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomact-9.0.36 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.36 ENV PATH $PATH:$JAVA_HOME HOME/BIN:$CATALINA_HOME/lib:$CATALINA_HOME/bin #容器運行時監聽的端口 EXPOSE 8080 #ENTRYPOINT ["/usr/local/apache-tomcat-9.0.36/bin/startup.sh"] #CMD ["/usr/local/apache-tomcat-9.0.36/bin/catalina.sh","run"] #啟動時運行tomcat CMD /usr/local/apache-tomcat-9.0.36/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.36/bin/logs/catalina.out


下面就可以進行構建

docker build -f Dockerfile -t lemon/tomcat9 .


運行一下

docker run -d -p 9080:8080 --name myt9 -v /mydocker/tomcat9/test:/usr/local/lemon/tomcat9/apache-tomcat-9.0.36/webapps/test -v /mydocker/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.36/logs --privileged=true 2158a23cca7d


再次驗證一下即可

完結撒花!,Docker的使用基本了解,就先學習到這里,如果以后哪里有再需要進一步學習的,再來學習!!!

總結

以上是生活随笔為你收集整理的Docker_DockerFile的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。