微服務架構 ------ Dockerfile定制鏡像


Docker容器不僅僅是運行原生的容器,而是把我們的具體的項目能夠布置到容器上面去,這就是Docker定制鏡像需要做的事情。  Docker容器 = new Docker鏡像  鏡像相當於類,容器相當於對象,所以修改了類之后,生成的容器也是根據需求生成的。

下面根據Dockerfile創建最簡單的定制化鏡像:  啟動tomcat容器主頁顯示  hello tomcat 

1.Dockerfile定制鏡像

  • 首先找到一個位置來放置我們的項目代碼,一般我們的程序都會放在 /usr/local/   下
  • cd /usr/local/      mkdir docker    cd docker    mkdir  myproject   cd myproject
  • touch index.jsp    vi index.jsp    hello tomcat  保存
  • touch Dockerfile  #創建Dockerfile文件,一般定制化的鏡像構建時的配置文件默認名稱是 Dockerfile,下面是文件內容

    From tomcat:latest 

    COPY index.jsp  /usr/local/tomcat/webapps/ROOT

  • From tomcat:latest     #從tomcat鏡像繼承過來,tomcat是最新版本,同樣也可以用tomcat的版本號替換latest    Copy index.jsp  /usr/local/tomcat/webapps/ROOT  #拷貝文件index.jsp到tomcat的ROOT目錄下   保存
  • docker build -t 鏡像名字 .      構建鏡像 看清楚,最后還有一個點。  最后那個點的含義是表示當前目錄以及容器的上下文環境。鏡像的構建是不是在宿主機里面構建的 而是在Docker中構建的,構建的過程是把當前所在的目錄以及目錄下的所有文件拷貝到Docker,所以在Dockerfile中使用 ./ 想要跳回上級目錄是行不通的,因為構建之后的環境已經變了。
  • 使用docker images 查看當前docker的鏡象信息,myshop是我創建的鏡像,鏡像的大小與tomcat一樣,因為鏡像本身就是在tomcat的基礎上創建的。

  

  • docker run -p 8080:8080 --name myshop -d myshop   myshop鏡像構建myshop容器  對外網映射到端口8080 並且以守護線程的方式運行   --name 容器的名字   -d myshop  以守護線程運行myshop鏡像
  • docker ps 查看當前運行的docker容器      docker container rm 容器id    刪除容器   docker container ls -a 顯示所有的運行過的容器,運行容器的名稱不能與歷史容器的名稱相同。可以先刪除歷史容器記錄,再運行

  

  • 運行結果

  

 

 

 2.Dockerfile指令

  • COPY  復制文件到一個目錄  格式:COPY 文件名或者帶路徑的文件名   目標路徑
  • ADD  和COPY指令基本類似,只是又添加了一些功能,命令格式一致     添加功能:拷貝完成之后,如果是壓縮文件自動執行文件解析當目標文件目錄
  • CMD 執行腳本命令  CMD ./startup.sh         只允許用一次  多個CMD只會執行最后一個
  • ENTRYPOINT 也是執行腳本命令與CMD基本類似,也是只允許用一次   啟動多個命令 可以寫一個腳本集,把所有的命令都添加進去 ,再用ENTRYPOINT啟動
  • ENV 環境變量   k=v
  • EXPOSE  端口暴露,
  • WORKDIR  類似於cd 進入目錄,指定容器的初始目錄

3.與docker容器的交互

  docker exec -it 容器名 /bin/bash   使用shell腳本交互  

 

 

 


免責聲明!

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



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